Tenant credential: optional and, when sent, must equal the shop bound to the key. Partner credential: required; it selects an organisation the user previously authorised.
A bulk selection, as it travels to a bulk mutation. Exactly ONE branch is
populated: ids for hand-picked rows (the common case), or the filter branch
(filters / search / excludeIds) for "select all matching". Supplying both
is a validation error rather than a silent reconciliation.
The filter branch reuses the SAME ListFilterInput the list query was issued
with, so bulk never grows a second filter language, and excludeIds carries the
rows the operator un-ticked while select-all-matching was on.
The filter branch is RE-EVALUATED AT EXECUTION TIME: a row created between the
operator ticking select-all-matching and confirming IS included. That is the
honest meaning of "everything matching this filter", and it is why a confirm
dialog must show bulkTargetCount's answer rather than a client-side tally.
The one shape every bulk mutation answers in, so the client renders one summary.
requested is what the target RESOLVED to on the server, not what the client
guessed. refused and failed are counted separately on purpose: a rule
declining a row (an AS Colour garment, a draft purchase order) is not a failure,
and collapsing the two makes correct behaviour read as breakage.
Shared across list services.
Show child attributes
Was this page helpful?
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"PRINTOOLS Docs","description":"PRINTOOLS documentation — shop management software for print and garment decoration.","colors":{"primary":"#252220","light":"#FACB37","dark":"#FACB37"},"logo":{"light":"https://mintcdn.com/printools-docs/O0KTj_rIOTsZeahM/images/Group2.png?fit=max\u0026auto=format\u0026n=O0KTj_rIOTsZeahM\u0026q=85\u0026s=c13cad1946e83c89b0c37822757efb9b","dark":"https://mintcdn.com/printools-docs/O0KTj_rIOTsZeahM/images/Group1.png?fit=max\u0026auto=format\u0026n=O0KTj_rIOTsZeahM\u0026q=85\u0026s=88ae571075eba2f4413e8f7686ca3ad0","href":"/"},"favicon":{"light":"https://mintcdn.com/printools-docs/_yDOXnlTxvmdL_Ke/images/favacon_smll.png?fit=max\u0026auto=format\u0026n=_yDOXnlTxvmdL_Ke\u0026q=85\u0026s=1716331eafc0a4e1157c30818e74c979","dark":"https://mintcdn.com/printools-docs/_yDOXnlTxvmdL_Ke/images/favacon_smll.png?fit=max\u0026auto=format\u0026n=_yDOXnlTxvmdL_Ke\u0026q=85\u0026s=1716331eafc0a4e1157c30818e74c979"},"api":{"openapi":"https://d1zl72794e73i2.cloudfront.net/releases/2026-09-08.api-blackbox/openapi.json"},"appearance":{"default":"system","strict":false},"background":{"color":{"light":"#FEFBF8","dark":"#12100E"}},"navbar":{"links":[{"href":"mailto:support@printools.com","label":"Support"}]},"footer":{},"fonts":{"heading":{"family":"Big Shoulders Display","weight":800},"body":{"family":"Geist"}},"styling":{"codeblocks":"dark","latex":false},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"printools-docs","hasAudioNarration":false,"actualSubdomain":"printools-docs","customDomains":["docs.printools.io"],"gitSource":{"type":"github","owner":"mintlify-community","repo":"docs-daysync-7781d365","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6acf4de3b4870666e532b6d8","collectionId":"ea377635-fe58-4b66-a96e-1026a91bd747","liveDeploymentHistoryId":"6acf4de3b4870666e532b6d8","schemaVersion":"v3"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{},"buildId":"6acf4de3b4870666e532b6d8","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"Public API","count":222},{"language":"default","tag":"Endpoints","count":215},{"language":"default","tag":"Jobs","count":27},{"language":"default","tag":"Quotes","count":27},{"language":"default","tag":"Garments \u0026 catalogue","count":23},{"language":"default","tag":"Customers","count":17},{"language":"default","tag":"Proofs \u0026 mocks","count":16},{"language":"default","tag":"Purchase orders","count":16},{"language":"default","tag":"Tasks","count":16},{"language":"default","tag":"Vendors","count":15}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"api/reference/post_v1_tasks_bulk_update","slug":"/api/reference/post_v1_tasks_bulk_update","pageMetadata":{"title":"Patch every production task matching a target","openapi":"POST /v1/tasks/bulk/update","description":"Requires the scope tasks.write.","href":"/api/reference/post_v1_tasks_bulk_update"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Requires the scope tasks.write.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,..._provideComponents(),...props.components};return _jsxs(_components.p,{children:[`Required scopes: `,_jsx(_components.code,{children:`tasks.write`}),`.`]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Patch every production task matching a target","openapi":"POST /v1/tasks/bulk/update","description":"Requires the scope tasks.write.","href":"/api/reference/post_v1_tasks_bulk_update"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Patch every production task matching a target.","operationId":"post_v1_tasks_bulk_update","tags":["tasks"],"description":"Requires the scope tasks.write.","security":["9900c36a-3277-4536-a0c1-2e3b7355d569","8b348bb2-4f9b-4eb9-b6b0-4c62b20b95ab"],"x-printools-required-scopes":["tasks.write"],"parameters":["3c9b359c-7157-42b4-b315-dc96a318d9e8","7d239af6-6366-40b6-85cc-72ed04180c7e"],"requestBody":"87896bab-fad9-4265-b9a2-94491f7ef1c4","responses":{"201":"132fc094-754f-47ee-8d90-55af7181e72a","400":"8f71e31e-8505-45d3-86d1-6e5db4f0e76f","401":"d8aa8736-379e-4885-ba6d-15559cc895ab","403":"eeebe45a-224b-4578-a5ab-57ab6bae1d31","404":"27b65488-d2c9-4ba3-b6cd-9ff78eb18b8b","409":"7411a30b-9816-4545-a46d-7be58218b867","413":"c76b764f-b741-4bfa-a0f7-10b70b7cb4f1","429":"f270d51f-f307-4a64-a0e9-09eaf02ca31f","500":"523692b0-0630-485b-99c7-3cb7e372cb13"},"x-codeSamples":[{"lang":"curl","label":"Tenant credential","source":"curl --request POST 'https://api.printools.io/v1/tasks/bulk/update' \\\n --header 'X-API-Key: $PRINTOOLS_API_KEY' \\\n --header 'Content-Type: application/json' \\\n --data '{\"target\":{\"ids\":[\"11111111-2222-3333-4444-555555555555\"],\"filters\":[{\"field\":\"example\",\"op\":\"example\",\"value\":\"example\",\"values\":[\"example\"],\"from\":\"example\",\"to\":\"example\"}],\"search\":\"example\",\"excludeIds\":[\"11111111-2222-3333-4444-555555555555\"]},\"input\":{\"status\":\"example\",\"assignedToEmail\":\"example\",\"assignedToName\":\"example\",\"dueDate\":\"2026-09-07\"}}'"}],"method":"post","type":"path","servers":["beaaf7be-9258-41cf-929a-55d51e0689b1"],"path":"/v1/tasks/bulk/update","baseUrlOptions":["https://api.printools.io"],"title":"Patch every production task matching a target.","codeSamples":[{"label":"Tenant credential","lang":"curl","source":"curl --request POST 'https://api.printools.io/v1/tasks/bulk/update' \\\n --header 'X-API-Key: $PRINTOOLS_API_KEY' \\\n --header 'Content-Type: application/json' \\\n --data '{\"target\":{\"ids\":[\"11111111-2222-3333-4444-555555555555\"],\"filters\":[{\"field\":\"example\",\"op\":\"example\",\"value\":\"example\",\"values\":[\"example\"],\"from\":\"example\",\"to\":\"example\"}],\"search\":\"example\",\"excludeIds\":[\"11111111-2222-3333-4444-555555555555\"]},\"input\":{\"status\":\"example\",\"assignedToEmail\":\"example\",\"assignedToName\":\"example\",\"dueDate\":\"2026-09-07\"}}'"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"3c9b359c-7157-42b4-b315-dc96a318d9e8":{"name":"X-PrintTools-Organization-Id","in":"header","required":false,"schema":{"type":"string","format":"uuid","isRequired":false,"description":"Tenant credential: optional and, when sent, must equal the shop bound to the key. Partner credential: required; it selects an organisation the user previously authorised.","uniqueKey":"","typeLabel":"string\u003cuuid>"},"description":"Tenant credential: optional and, when sent, must equal the shop bound to the key. Partner credential: required; it selects an organisation the user previously authorised."},"7d239af6-6366-40b6-85cc-72ed04180c7e":{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"isRequired":false,"description":"Optional client-generated key for write retries. Reusing it with a different request returns 409; a replay includes Idempotency-Replayed: true.","uniqueKey":"","typeLabel":"string"},"description":"Optional client-generated key for write retries. Reusing it with a different request returns 409; a replay includes Idempotency-Replayed: true."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target":{"type":"object","description":"A bulk selection, as it travels to a bulk mutation. Exactly ONE branch is\npopulated: `ids` for hand-picked rows (the common case), or the filter branch\n(`filters` / `search` / `excludeIds`) for \"select all matching\". Supplying both\nis a validation error rather than a silent reconciliation.\n\nThe filter branch reuses the SAME `ListFilterInput` the list query was issued\nwith, so bulk never grows a second filter language, and `excludeIds` carries the\nrows the operator un-ticked while select-all-matching was on.\n\nThe filter branch is RE-EVALUATED AT EXECUTION TIME: a row created between the\noperator ticking select-all-matching and confirming IS included. That is the\nhonest meaning of \"everything matching this filter\", and it is why a confirm\ndialog must show `bulkTargetCount`'s answer rather than a client-side tally.\n\nShared across list services.","properties":{"ids":{"type":"array","items":{"type":"string","uniqueKey":"target.ids.items.[INDEX]","typeLabel":"string"},"uniqueKey":"target.ids","typeLabel":"string[]"},"filters":{"type":"array","items":{"type":"object","description":"One advanced-filter condition for a list query — mirrors the client's\nFilterBuilderButton. Shared across list services (see quote-service for the\nfull field docs).","properties":{"field":{"type":"string","isRequired":true,"uniqueKey":"target.filters.items.[INDEX].field","typeLabel":"string"},"op":{"type":"string","isRequired":true,"uniqueKey":"target.filters.items.[INDEX].op","typeLabel":"string"},"value":{"type":"string","uniqueKey":"target.filters.items.[INDEX].value","typeLabel":"string"},"values":{"type":"array","items":{"type":"string","uniqueKey":"target.filters.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"uniqueKey":"target.filters.items.[INDEX].values","typeLabel":"string[]"},"from":{"type":"string","uniqueKey":"target.filters.items.[INDEX].from","typeLabel":"string"},"to":{"type":"string","uniqueKey":"target.filters.items.[INDEX].to","typeLabel":"string"}},"required":["field","op"],"uniqueKey":"target.filters.items.[INDEX]","typeLabel":"object"},"uniqueKey":"target.filters","typeLabel":"object[]"},"search":{"type":"string","uniqueKey":"target.search","typeLabel":"string"},"excludeIds":{"type":"array","items":{"type":"string","uniqueKey":"target.excludeIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"target.excludeIds","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"target","typeLabel":"object"},"input":{"type":"object","description":"Fields a bulk production-task update may set. Omitted = untouched.","properties":{"status":{"type":"string","uniqueKey":"input.status","typeLabel":"string"},"assignedToEmail":{"type":"string","uniqueKey":"input.assignedToEmail","typeLabel":"string"},"assignedToName":{"type":"string","uniqueKey":"input.assignedToName","typeLabel":"string"},"dueDate":{"type":"string","format":"date","uniqueKey":"input.dueDate","typeLabel":"string\u003cdate>"}},"isRequired":true,"uniqueKey":"input","typeLabel":"object"}},"required":["input","target"],"uniqueKey":"","typeLabel":"object"},"examples":{"example":{"title":"example","value":{"target":{"ids":["11111111-2222-3333-4444-555555555555"],"filters":[{"field":"example","op":"example","value":"example","values":["example"],"from":"example","to":"example"}],"search":"example","excludeIds":["11111111-2222-3333-4444-555555555555"]},"input":{"status":"example","assignedToEmail":"example","assignedToName":"example","dueDate":"2026-09-07"}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"132fc094-754f-47ee-8d90-55af7181e72a":{"description":"Successful response.","headers":{"Idempotency-Replayed":{"description":"Present and true when this response was replayed from a prior Idempotency-Key request.","schema":{"type":"string","enum":["true"]}}},"content":{"application/json":{"schema":{"type":"object","description":"Every 2xx response uses this envelope.","required":["status","message","data"],"properties":{"status":{"type":"boolean","description":"The actual resolver result. It can be false when an operation returns false or null without throwing.","isRequired":true,"uniqueKey":"status","typeLabel":"boolean"},"message":{"type":"string","example":"OK","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"data":{"type":"object","description":"The one shape every bulk mutation answers in, so the client renders one summary.\n`requested` is what the target RESOLVED to on the server, not what the client\nguessed. `refused` and `failed` are counted separately on purpose: a rule\ndeclining a row (an AS Colour garment, a draft purchase order) is not a failure,\nand collapsing the two makes correct behaviour read as breakage.\n\nShared across list services.","required":["requested","affected","refused","failed","outcomes"],"properties":{"requested":{"type":"integer","isRequired":true,"uniqueKey":"data.requested","typeLabel":"integer"},"affected":{"type":"integer","isRequired":true,"uniqueKey":"data.affected","typeLabel":"integer"},"refused":{"type":"integer","isRequired":true,"uniqueKey":"data.refused","typeLabel":"integer"},"failed":{"type":"integer","isRequired":true,"uniqueKey":"data.failed","typeLabel":"integer"},"outcomes":{"type":"array","items":{"type":"object","description":"What happened to one row in a bulk action. `reason` is null only for `ok`.","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.outcomes.items.[INDEX].id","typeLabel":"string"},"status":{"type":"string","description":"Per-row verdict for a bulk action. `refused` is a rule saying no; `failed` is an error.","enum":["ok","refused","failed"],"isRequired":true,"uniqueKey":"data.outcomes.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"reason":{"oneOf":[{"type":"string","uniqueKey":"data.outcomes.items.[INDEX].reason.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.outcomes.items.[INDEX].reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.outcomes.items.[INDEX].reason","typeLabel":"string | null"}},"required":["id","status"],"uniqueKey":"data.outcomes.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.outcomes","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":true,"message":"OK","data":{"requested":123,"affected":123,"refused":123,"failed":123,"outcomes":[{"id":"\u003cstring>","status":"ok","reason":"\u003cstring>"}]}}}},"exampleType":"generated"}},"exampleType":"generated"},"8f71e31e-8505-45d3-86d1-6e5db4f0e76f":{"description":"Validation or request-shape error. Correct the request before retrying.","content":{"application/json":{"schema":{"type":"object","required":["error","message","status"],"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"boolean","const":false,"isRequired":true,"uniqueKey":"status","typeLabel":"boolean"}},"description":"Every non-2xx response uses this envelope.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","status":false}}},"exampleType":"generated"}},"exampleType":"generated"},"d8aa8736-379e-4885-ba6d-15559cc895ab":{"description":"Credential authentication failed.","content":{"application/json":{"schema":{"type":"object","required":["error","message","status"],"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"boolean","const":false,"isRequired":true,"uniqueKey":"status","typeLabel":"boolean"}},"description":"Every non-2xx response uses this envelope.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","status":false}}},"exampleType":"generated"}},"headers":{"WWW-Authenticate":{"schema":{"type":"string","example":"ApiKey"}}},"exampleType":"generated"},"eeebe45a-224b-4578-a5ab-57ab6bae1d31":{"description":"The credential lacks a required scope, or its actor lacks permission.","content":{"application/json":{"schema":{"type":"object","required":["error","message","status"],"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"boolean","const":false,"isRequired":true,"uniqueKey":"status","typeLabel":"boolean"}},"description":"Every non-2xx response uses this envelope.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","status":false}}},"exampleType":"generated"}},"exampleType":"generated"},"27b65488-d2c9-4ba3-b6cd-9ff78eb18b8b":{"description":"The resource or endpoint was not found.","content":{"application/json":{"schema":{"type":"object","required":["error","message","status"],"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"boolean","const":false,"isRequired":true,"uniqueKey":"status","typeLabel":"boolean"}},"description":"Every non-2xx response uses this envelope.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","status":false}}},"exampleType":"generated"}},"exampleType":"generated"},"7411a30b-9816-4545-a46d-7be58218b867":{"description":"Conflict, including idempotency-key reuse or an in-flight idempotent request.","content":{"application/json":{"schema":{"type":"object","required":["error","message","status"],"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"boolean","const":false,"isRequired":true,"uniqueKey":"status","typeLabel":"boolean"}},"description":"Every non-2xx response uses this envelope.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","status":false}}},"exampleType":"generated"}},"exampleType":"generated"},"c76b764f-b741-4bfa-a0f7-10b70b7cb4f1":{"description":"The JSON request body exceeds the published size limit.","content":{"application/json":{"schema":{"type":"object","required":["error","message","status"],"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"boolean","const":false,"isRequired":true,"uniqueKey":"status","typeLabel":"boolean"}},"description":"Every non-2xx response uses this envelope.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","status":false}}},"exampleType":"generated"}},"exampleType":"generated"},"f270d51f-f307-4a64-a0e9-09eaf02ca31f":{"description":"Rate limited. Retry after the returned delay.","content":{"application/json":{"schema":{"type":"object","required":["error","message","status"],"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"boolean","const":false,"isRequired":true,"uniqueKey":"status","typeLabel":"boolean"}},"description":"Every non-2xx response uses this envelope.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","status":false}}},"exampleType":"generated"}},"headers":{"Retry-After":{"description":"Whole seconds to wait.","schema":{"type":"integer","minimum":0}}},"exampleType":"generated"},"523692b0-0630-485b-99c7-3cb7e372cb13":{"description":"An unexpected server error. A retry can be appropriate.","content":{"application/json":{"schema":{"type":"object","required":["error","message","status"],"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"boolean","const":false,"isRequired":true,"uniqueKey":"status","typeLabel":"boolean"}},"description":"Every non-2xx response uses this envelope.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","status":false}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"9900c36a-3277-4536-a0c1-2e3b7355d569":{"tenantApiKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Tenant credential. This is sufficient by itself.","scopes":[]}},"8b348bb2-4f9b-4eb9-b6b0-4c62b20b95ab":{"partnerApiKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Partner application client ID.","scopes":[]},"partnerApiSecret":{"type":"apiKey","in":"header","name":"X-API-Secret","description":"Partner application secret.","scopes":[]},"partnerBearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Cognito access token obtained through OAuth.","scopes":[]}}},"servers":{"beaaf7be-9258-41cf-929a-55d51e0689b1":{"url":"https://api.printools.io","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Tenant credential. This is sufficient by itself.","scopes":[]},"schema":{"title":"X-API-Key","type":"string","description":"Tenant credential. This is sufficient by itself.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"tenantApiKey","name":"X-API-Key"}],"title":"tenantApiKey"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Partner application client ID.","scopes":[]},"schema":{"title":"X-API-Key","type":"string","description":"Partner application client ID.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"partnerApiKey","name":"X-API-Key"},{"scheme":{"type":"apiKey","in":"header","name":"X-API-Secret","description":"Partner application secret.","scopes":[]},"schema":{"title":"X-API-Secret","type":"string","description":"Partner application secret.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"partnerApiSecret","name":"X-API-Secret"},{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Cognito access token obtained through OAuth.","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Cognito access token obtained through OAuth.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"partnerBearer","name":"Authorization"}],"title":"partnerApiKey \u0026 partnerApiSecret \u0026 partnerBearer"}]},"originalFileLocation":"https://d1zl72794e73i2.cloudfront.net/releases/2026-09-08.api-blackbox/openapi.json"},"subdomain":"printools-docs","siteName":"PRINTOOLS Docs","title":"Patch every production task matching a target - PRINTOOLS Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-08T12:10:20.008Z","originalFileLocation":"api/reference/post_v1_tasks_bulk_update.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Requires the scope tasks.write.\">\u003cmeta data-mint-head name=\"application-name\" content=\"PRINTOOLS Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/printools-docs/qiRPxJTgwUI6WMAG/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/printools-docs/qiRPxJTgwUI6WMAG/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/printools-docs/qiRPxJTgwUI6WMAG/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/printools-docs/qiRPxJTgwUI6WMAG/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/printools-docs/qiRPxJTgwUI6WMAG/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/printools-docs/qiRPxJTgwUI6WMAG/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/printools-docs/qiRPxJTgwUI6WMAG/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/printools-docs/qiRPxJTgwUI6WMAG/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/printools-docs/qiRPxJTgwUI6WMAG/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Patch every production task matching a target - PRINTOOLS Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Requires the scope tasks.write.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"PRINTOOLS Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.printools.io/api/reference/post_v1_tasks_bulk_update\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://printools-docs.mintlify.app/_mintlify/api/og/v2?division=Tasks\u0026amp;title=Patch+every+production+task+matching+a+target\u0026amp;description=Requires+the+scope+tasks.write.\u0026amp;theme=1264f79c0fa4bc489a663c38\u0026amp;signature=750d526edc5755de410e172448b43b99ee84c6cd86210e1c668d8b0ec67ed9b5\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Patch every production task matching a target - PRINTOOLS Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Requires the scope tasks.write.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://printools-docs.mintlify.app/_mintlify/api/og/v2?division=Tasks\u0026amp;title=Patch+every+production+task+matching+a+target\u0026amp;description=Requires+the+scope+tasks.write.\u0026amp;theme=1264f79c0fa4bc489a663c38\u0026amp;signature=750d526edc5755de410e172448b43b99ee84c6cd86210e1c668d8b0ec67ed9b5\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/printools-docs/qiRPxJTgwUI6WMAG/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"PRINTOOLS Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#252220\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.printools.io/api/reference/post_v1_tasks_bulk_update\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api/reference/post_v1_tasks_bulk_update.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.printools.io/#organization\",\"name\":\"PRINTOOLS Docs\",\"url\":\"https://docs.printools.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/printools-docs/O0KTj_rIOTsZeahM/images/Group2.png?fit=max\u0026auto=format\u0026n=O0KTj_rIOTsZeahM\u0026q=85\u0026s=c13cad1946e83c89b0c37822757efb9b\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.printools.io#website\",\"name\":\"PRINTOOLS Docs\",\"url\":\"https://docs.printools.io\",\"publisher\":{\"@id\":\"https://docs.printools.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.printools.io/api/reference/post_v1_tasks_bulk_update#webpage\",\"url\":\"https://docs.printools.io/api/reference/post_v1_tasks_bulk_update\",\"name\":\"Patch every production task matching a target\",\"description\":\"Requires the scope tasks.write.\",\"dateModified\":\"2026-09-08T12:10:20.008Z\",\"isPartOf\":{\"@id\":\"https://docs.printools.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.printools.io/api/reference/post_v1_tasks_bulk_update#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.printools.io/api/reference/post_v1_tasks_bulk_update#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.printools.io/api/endpoints/account-and-reference\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tasks\",\"item\":\"https://docs.printools.io/api/endpoints/tasks\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Patch every production task matching a target\",\"item\":\"https://docs.printools.io/api/reference/post_v1_tasks_bulk_update\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.printools.io/api/reference/post_v1_tasks_bulk_update#apireference\",\"headline\":\"Patch every production task matching a target\",\"name\":\"Patch every production task matching a target\",\"description\":\"Requires the scope tasks.write.\",\"url\":\"https://docs.printools.io/api/reference/post_v1_tasks_bulk_update\",\"mainEntityOfPage\":{\"@id\":\"https://docs.printools.io/api/reference/post_v1_tasks_bulk_update#webpage\"},\"dateModified\":\"2026-09-08T12:10:20.008Z\",\"publisher\":{\"@id\":\"https://docs.printools.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.printools.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"PRINTOOLS Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"PRINTOOLS Docs","nav":{"global":null,"tabs":[{"tab":"Guides","icon":"magic-wand-sparkles","pages":[{"title":"Guides","href":""}]},{"tab":"Public API","icon":"code","groups":[{"group":"Getting started","icon":"compass","pages":[{"title":"Introduction","icon":"code","href":"/api/introduction"},{"title":"Authentication","icon":"lock","href":"/api/authentication"},{"title":"Scopes","icon":"shield-check","href":"/api/scopes"},{"title":"Responses and errors","icon":"reply","href":"/api/responses"},{"title":"Rate limits","icon":"gauge-high","href":"/api/rate-limits"},{"title":"Pagination","icon":"list-ol","href":"/api/pagination"},{"title":"Writing safely","icon":"fingerprint","href":"/api/idempotency"}]},{"group":"Endpoints","icon":"plug","pages":[{"group":"Account \u0026 reference","pages":[{"title":"Account and reference","icon":"id-card","href":"/api/endpoints/account-and-reference"},{"title":"Get current account","openapi":"GET /v1/me","href":"/api/reference/get_v1_me"},{"title":"The lookup bundle every write endpoint depends on","openapi":"GET /v1/reference/types","href":"/api/reference/get_v1_reference_types"},{"title":"Built-in status vocabularies, including which purchase-order statuses are derived and therefore not settable","openapi":"GET /v1/reference/statuses","href":"/api/reference/get_v1_reference_statuses"},{"title":"Decoration methods, positions and their vocabularies","openapi":"GET /v1/reference/decorations","href":"/api/reference/get_v1_reference_decorations"},{"title":"The scope catalogue, served from its single source","openapi":"GET /v1/reference/scopes","href":"/api/reference/get_v1_reference_scopes"},{"title":"The webhook event catalogue","openapi":"GET /v1/reference/events","href":"/api/reference/get_v1_reference_events"},{"title":"Rate limits, batch ceilings and page size, from the one limits module","openapi":"GET /v1/reference/limits","href":"/api/reference/get_v1_reference_limits"}]},{"group":"Quotes","pages":[{"title":"Quotes","icon":"file-invoice-dollar","href":"/api/endpoints/quotes"},{"title":"List quotes","openapi":"GET /v1/quotes","href":"/api/reference/get_v1_quotes"},{"title":"Create a quote","openapi":"POST /v1/quotes","href":"/api/reference/post_v1_quotes"},{"title":"Filter facets for the quote list","openapi":"GET /v1/quotes/facets","href":"/api/reference/get_v1_quotes_facets"},{"title":"One quote with its groups, lines and decorations","openapi":"GET /v1/quotes/{quoteId}","href":"/api/reference/get_v1_quotes_quoteId"},{"title":"Update a quote","openapi":"PATCH /v1/quotes/{quoteId}","href":"/api/reference/patch_v1_quotes_quoteId"},{"title":"Email a quote to the customer","openapi":"POST /v1/quotes/{quoteId}/send","href":"/api/reference/post_v1_quotes_quoteId_send"},{"title":"Convert a quote into a job","openapi":"POST /v1/quotes/{quoteId}/convert-to-job","href":"/api/reference/post_v1_quotes_quoteId_convert_to_job"},{"title":"Add a group to a quote","openapi":"POST /v1/quotes/{quoteId}/groups","href":"/api/reference/post_v1_quotes_quoteId_groups"},{"title":"Update a quote group","openapi":"PATCH /v1/quote-groups/{groupId}","href":"/api/reference/patch_v1_quote_groups_groupId"},{"title":"Delete a quote group","openapi":"DELETE /v1/quote-groups/{groupId}","href":"/api/reference/delete_v1_quote_groups_groupId"},{"title":"Add a line to a quote group","openapi":"POST /v1/quote-groups/{groupId}/lines","href":"/api/reference/post_v1_quote_groups_groupId_lines"},{"title":"Update a quote line","openapi":"PATCH /v1/quote-lines/{lineId}","href":"/api/reference/patch_v1_quote_lines_lineId"},{"title":"Delete a quote line","openapi":"DELETE /v1/quote-lines/{lineId}","href":"/api/reference/delete_v1_quote_lines_lineId"},{"title":"Attach a decoration to a quote group","openapi":"POST /v1/quote-groups/{groupId}/decorations","href":"/api/reference/post_v1_quote_groups_groupId_decorations"},{"title":"Delete every quote matching a target","openapi":"POST /v1/quotes/bulk/delete","href":"/api/reference/post_v1_quotes_bulk_delete"},{"title":"Duplicate every quote matching a target","openapi":"POST /v1/quotes/bulk/duplicate","href":"/api/reference/post_v1_quotes_bulk_duplicate"},{"title":"Set the status of every quote matching a target","openapi":"POST /v1/quotes/bulk/status","href":"/api/reference/post_v1_quotes_bulk_status"},{"title":"Convert every quote matching a target into a job","openapi":"POST /v1/quotes/bulk/convert-to-jobs","href":"/api/reference/post_v1_quotes_bulk_convert_to_jobs"},{"title":"A presigned link to the quote PDF. Expires in 900 seconds","openapi":"GET /v1/quotes/{quoteId}/pdf","href":"/api/reference/get_v1_quotes_quoteId_pdf"},{"title":"Every invoice raised against a quote","openapi":"GET /v1/quotes/{quoteId}/invoices","href":"/api/reference/get_v1_quotes_quoteId_invoices"},{"title":"Generate an invoice from a quote","openapi":"POST /v1/quotes/{quoteId}/invoice","href":"/api/reference/post_v1_quotes_quoteId_invoice"},{"title":"One quote and everything hanging off it, in one call","openapi":"GET /v1/quotes/{quoteId}/data","href":"/api/reference/get_v1_quotes_quoteId_data"},{"title":"Delete a quote","openapi":"DELETE /v1/quotes/{quoteId}","href":"/api/reference/delete_v1_quotes_quoteId"},{"title":"Duplicate a quote","openapi":"POST /v1/quotes/{quoteId}/duplicate","href":"/api/reference/post_v1_quotes_quoteId_duplicate"},{"title":"Update a quote-group decoration","openapi":"PATCH /v1/quote-group-decorations/{decorationId}","href":"/api/reference/patch_v1_quote_group_decorations_decorationId"},{"title":"Remove a decoration from a quote group","openapi":"DELETE /v1/quote-group-decorations/{decorationId}","href":"/api/reference/delete_v1_quote_group_decorations_decorationId"}]},{"group":"Jobs","pages":[{"title":"Jobs","icon":"conveyor-belt","href":"/api/endpoints/jobs"},{"title":"List jobs, newest first","openapi":"GET /v1/jobs","href":"/api/reference/get_v1_jobs"},{"title":"Create a job","openapi":"POST /v1/jobs","href":"/api/reference/post_v1_jobs"},{"title":"Filter facets for the job list","openapi":"GET /v1/jobs/facets","href":"/api/reference/get_v1_jobs_facets"},{"title":"One job with its groups, lines and decorations","openapi":"GET /v1/jobs/{jobId}","href":"/api/reference/get_v1_jobs_jobId"},{"title":"Update a job","openapi":"PATCH /v1/jobs/{jobId}","href":"/api/reference/patch_v1_jobs_jobId"},{"title":"Delete a job","openapi":"DELETE /v1/jobs/{jobId}","href":"/api/reference/delete_v1_jobs_jobId"},{"title":"The job activity feed. Names the staff who acted","openapi":"GET /v1/jobs/{jobId}/activity","href":"/api/reference/get_v1_jobs_jobId_activity"},{"title":"Duplicate a job","openapi":"POST /v1/jobs/{jobId}/duplicate","href":"/api/reference/post_v1_jobs_jobId_duplicate"},{"title":"Re-sync a job from the quote it came from","openapi":"POST /v1/jobs/{jobId}/sync-from-quote","href":"/api/reference/post_v1_jobs_jobId_sync_from_quote"},{"title":"Add a group to a job","openapi":"POST /v1/jobs/{jobId}/groups","href":"/api/reference/post_v1_jobs_jobId_groups"},{"title":"Update a job group","openapi":"PATCH /v1/job-groups/{groupId}","href":"/api/reference/patch_v1_job_groups_groupId"},{"title":"Delete a job group","openapi":"DELETE /v1/job-groups/{groupId}","href":"/api/reference/delete_v1_job_groups_groupId"},{"title":"Add a line to a job group","openapi":"POST /v1/job-groups/{groupId}/lines","href":"/api/reference/post_v1_job_groups_groupId_lines"},{"title":"Update a job line","openapi":"PATCH /v1/job-lines/{lineId}","href":"/api/reference/patch_v1_job_lines_lineId"},{"title":"Delete a job line","openapi":"DELETE /v1/job-lines/{lineId}","href":"/api/reference/delete_v1_job_lines_lineId"},{"title":"Attach a decoration to a job group","openapi":"POST /v1/job-groups/{groupId}/decorations","href":"/api/reference/post_v1_job_groups_groupId_decorations"},{"title":"Update a job-group decoration","openapi":"PATCH /v1/job-group-decorations/{decorationId}","href":"/api/reference/patch_v1_job_group_decorations_decorationId"},{"title":"Remove a decoration from a job group","openapi":"DELETE /v1/job-group-decorations/{decorationId}","href":"/api/reference/delete_v1_job_group_decorations_decorationId"},{"title":"Patch every job matching a target","openapi":"POST /v1/jobs/bulk/update","href":"/api/reference/post_v1_jobs_bulk_update"},{"title":"Delete every job matching a target","openapi":"POST /v1/jobs/bulk/delete","href":"/api/reference/post_v1_jobs_bulk_delete"},{"title":"Duplicate every job matching a target","openapi":"POST /v1/jobs/bulk/duplicate","href":"/api/reference/post_v1_jobs_bulk_duplicate"},{"title":"Every purchase order raised for a job","openapi":"GET /v1/jobs/{jobId}/purchase-orders","href":"/api/reference/get_v1_jobs_jobId_purchase_orders"},{"title":"Raise purchase orders for a job, one per vendor","openapi":"POST /v1/jobs/{jobId}/purchase-orders","href":"/api/reference/post_v1_jobs_jobId_purchase_orders"},{"title":"Every proof on a job","openapi":"GET /v1/jobs/{jobId}/proofs","href":"/api/reference/get_v1_jobs_jobId_proofs"},{"title":"Every production task on a job","openapi":"GET /v1/jobs/{jobId}/tasks","href":"/api/reference/get_v1_jobs_jobId_tasks"},{"title":"One job and everything hanging off it, in one call","openapi":"GET /v1/jobs/{jobId}/data","href":"/api/reference/get_v1_jobs_jobId_data"}]},{"group":"Customers","pages":[{"title":"Customers","icon":"users","href":"/api/endpoints/customers"},{"title":"List customers","openapi":"GET /v1/customers","href":"/api/reference/get_v1_customers"},{"title":"Create a customer","openapi":"POST /v1/customers","href":"/api/reference/post_v1_customers"},{"title":"One customer with contacts and addresses","openapi":"GET /v1/customers/{customerId}","href":"/api/reference/get_v1_customers_customerId"},{"title":"Update a customer","openapi":"PATCH /v1/customers/{customerId}","href":"/api/reference/patch_v1_customers_customerId"},{"title":"Archive a customer","openapi":"POST /v1/customers/{customerId}/archive","href":"/api/reference/post_v1_customers_customerId_archive"},{"title":"Restore an archived customer","openapi":"POST /v1/customers/{customerId}/unarchive","href":"/api/reference/post_v1_customers_customerId_unarchive"},{"title":"Add a contact to a customer","openapi":"POST /v1/customers/{customerId}/contacts","href":"/api/reference/post_v1_customers_customerId_contacts"},{"title":"Update a contact","openapi":"PATCH /v1/contacts/{contactId}","href":"/api/reference/patch_v1_contacts_contactId"},{"title":"Delete a contact","openapi":"DELETE /v1/contacts/{contactId}","href":"/api/reference/delete_v1_contacts_contactId"},{"title":"Add an address to a customer","openapi":"POST /v1/customers/{customerId}/addresses","href":"/api/reference/post_v1_customers_customerId_addresses"},{"title":"Update an address","openapi":"PATCH /v1/addresses/{addressId}","href":"/api/reference/patch_v1_addresses_addressId"},{"title":"Delete an address","openapi":"DELETE /v1/addresses/{addressId}","href":"/api/reference/delete_v1_addresses_addressId"},{"title":"Create many customers in one call","openapi":"POST /v1/customers/bulk/create","href":"/api/reference/post_v1_customers_bulk_create"},{"title":"Archive or restore every customer matching a target","openapi":"POST /v1/customers/bulk/archive","href":"/api/reference/post_v1_customers_bulk_archive"},{"title":"Set the tier of every customer matching a target","openapi":"POST /v1/customers/bulk/tier","href":"/api/reference/post_v1_customers_bulk_tier"},{"title":"One customer with their quotes and jobs, in one call","openapi":"GET /v1/customers/{customerId}/data","href":"/api/reference/get_v1_customers_customerId_data"}]},{"group":"Garments \u0026 catalogue","pages":[{"title":"Garments and catalogue","icon":"shirt","href":"/api/endpoints/garments"},{"title":"List garments, the shop's own items and the supplier catalogue","openapi":"GET /v1/garments","href":"/api/reference/get_v1_garments"},{"title":"Create a garment","openapi":"POST /v1/garments","href":"/api/reference/post_v1_garments"},{"title":"Filter facets for the garment list","openapi":"GET /v1/garments/facets","href":"/api/reference/get_v1_garments_facets"},{"title":"Garment assets","openapi":"GET /v1/garments/assets","href":"/api/reference/get_v1_garments_assets"},{"title":"One garment","openapi":"GET /v1/garments/{garmentId}","href":"/api/reference/get_v1_garments_garmentId"},{"title":"Update a garment","openapi":"PATCH /v1/garments/{garmentId}","href":"/api/reference/patch_v1_garments_garmentId"},{"title":"Delete a garment","openapi":"DELETE /v1/garments/{garmentId}","href":"/api/reference/delete_v1_garments_garmentId"},{"title":"Every variant of one style code","openapi":"GET /v1/garment-variants/{styleCode}","href":"/api/reference/get_v1_garment_variants_styleCode"},{"title":"Create a garment variant","openapi":"POST /v1/garment-variants","href":"/api/reference/post_v1_garment_variants"},{"title":"Update a garment variant","openapi":"PATCH /v1/garment-variants/id/{variantId}","href":"/api/reference/patch_v1_garment_variants_id_variantId"},{"title":"Delete a garment variant","openapi":"DELETE /v1/garment-variants/id/{variantId}","href":"/api/reference/delete_v1_garment_variants_id_variantId"},{"title":"Create a garment asset","openapi":"POST /v1/garment-assets","href":"/api/reference/post_v1_garment_assets"},{"title":"Update a garment asset","openapi":"PATCH /v1/garment-assets/{assetId}","href":"/api/reference/patch_v1_garment_assets_assetId"},{"title":"Delete a garment asset","openapi":"DELETE /v1/garment-assets/{assetId}","href":"/api/reference/delete_v1_garment_assets_assetId"},{"title":"Create many garments in one call","openapi":"POST /v1/garments/bulk/create","href":"/api/reference/post_v1_garments_bulk_create"},{"title":"Upsert a catalogue of garments in one set-based call","openapi":"POST /v1/garments/bulk/upsert","href":"/api/reference/post_v1_garments_bulk_upsert"},{"title":"Patch every garment matching a target","openapi":"POST /v1/garments/bulk/update","href":"/api/reference/post_v1_garments_bulk_update"},{"title":"Delete every garment matching a target","openapi":"POST /v1/garments/bulk/delete","href":"/api/reference/post_v1_garments_bulk_delete"},{"title":"Create many garment variants in one call","openapi":"POST /v1/garment-variants/bulk/create","href":"/api/reference/post_v1_garment_variants_bulk_create"},{"title":"Upsert garment variants in one set-based call","openapi":"POST /v1/garment-variants/bulk/upsert","href":"/api/reference/post_v1_garment_variants_bulk_upsert"},{"title":"Set status and stock across an import batch","openapi":"POST /v1/garments/bulk/status-and-stock","href":"/api/reference/post_v1_garments_bulk_status_and_stock"},{"title":"The shop's whole catalogue in one call: their own items and the supplier catalogue, variants inline. Cursor-paged; ?source=manual|ascolour","openapi":"GET /v1/catalogue","href":"/api/reference/get_v1_catalogue"}]},{"group":"Decorations","pages":[{"title":"Decorations","icon":"palette","href":"/api/endpoints/decorations"},{"title":"List decorations","openapi":"GET /v1/decorations","href":"/api/reference/get_v1_decorations"},{"title":"Create a decoration","openapi":"POST /v1/decorations","href":"/api/reference/post_v1_decorations"},{"title":"Filter facets for the decoration list","openapi":"GET /v1/decorations/facets","href":"/api/reference/get_v1_decorations_facets"},{"title":"One decoration","openapi":"GET /v1/decorations/{decorationId}","href":"/api/reference/get_v1_decorations_decorationId"},{"title":"Update a decoration","openapi":"PATCH /v1/decorations/{decorationId}","href":"/api/reference/patch_v1_decorations_decorationId"},{"title":"Delete a decoration","openapi":"DELETE /v1/decorations/{decorationId}","href":"/api/reference/delete_v1_decorations_decorationId"},{"title":"Create many decorations in one call","openapi":"POST /v1/decorations/bulk/create","href":"/api/reference/post_v1_decorations_bulk_create"},{"title":"Patch every decoration matching a target","openapi":"POST /v1/decorations/bulk/update","href":"/api/reference/post_v1_decorations_bulk_update"},{"title":"Delete every decoration matching a target","openapi":"POST /v1/decorations/bulk/delete","href":"/api/reference/post_v1_decorations_bulk_delete"}]},{"group":"Pre-built items","pages":[{"title":"Pre-built items","icon":"box-archive","href":"/api/endpoints/prebuilt-items"},{"title":"List pre-built items","openapi":"GET /v1/prebuilt-items","href":"/api/reference/get_v1_prebuilt_items"},{"title":"Create a pre-built item (server-assigned id)","openapi":"POST /v1/prebuilt-items","href":"/api/reference/post_v1_prebuilt_items"},{"title":"One pre-built item","openapi":"GET /v1/prebuilt-items/{itemId}","href":"/api/reference/get_v1_prebuilt_items_itemId"},{"title":"Create or replace a pre-built item","openapi":"PUT /v1/prebuilt-items/{itemId}","href":"/api/reference/put_v1_prebuilt_items_itemId"},{"title":"Delete a pre-built item","openapi":"DELETE /v1/prebuilt-items/{itemId}","href":"/api/reference/delete_v1_prebuilt_items_itemId"},{"title":"Delete every pre-built item matching a target","openapi":"POST /v1/prebuilt-items/bulk/delete","href":"/api/reference/post_v1_prebuilt_items_bulk_delete"},{"title":"Set the status of every pre-built item matching a target","openapi":"POST /v1/prebuilt-items/bulk/status","href":"/api/reference/post_v1_prebuilt_items_bulk_status"}]},{"group":"Purchase orders","pages":[{"title":"Purchase orders","icon":"truck","href":"/api/endpoints/purchase-orders"},{"title":"List purchase orders","openapi":"GET /v1/purchase-orders","href":"/api/reference/get_v1_purchase_orders"},{"title":"Create a purchase order","openapi":"POST /v1/purchase-orders","href":"/api/reference/post_v1_purchase_orders"},{"title":"One purchase order with its lines","openapi":"GET /v1/purchase-orders/{purchaseOrderId}","href":"/api/reference/get_v1_purchase_orders_purchaseOrderId"},{"title":"Update a purchase order","openapi":"PATCH /v1/purchase-orders/{purchaseOrderId}","href":"/api/reference/patch_v1_purchase_orders_purchaseOrderId"},{"title":"Archive a purchase order","openapi":"POST /v1/purchase-orders/{purchaseOrderId}/archive","href":"/api/reference/post_v1_purchase_orders_purchaseOrderId_archive"},{"title":"Restore an archived purchase order","openapi":"POST /v1/purchase-orders/{purchaseOrderId}/unarchive","href":"/api/reference/post_v1_purchase_orders_purchaseOrderId_unarchive"},{"title":"Add a line to a purchase order","openapi":"POST /v1/purchase-orders/{purchaseOrderId}/lines","href":"/api/reference/post_v1_purchase_orders_purchaseOrderId_lines"},{"title":"Update a purchase-order line","openapi":"PATCH /v1/purchase-order-lines/{lineId}","href":"/api/reference/patch_v1_purchase_order_lines_lineId"},{"title":"Delete a purchase-order line","openapi":"DELETE /v1/purchase-order-lines/{lineId}","href":"/api/reference/delete_v1_purchase_order_lines_lineId"},{"title":"Record a receipt against a purchase-order line","openapi":"POST /v1/purchase-order-lines/{lineId}/receive","href":"/api/reference/post_v1_purchase_order_lines_lineId_receive"},{"title":"Attach a vendor to a purchase order","openapi":"POST /v1/purchase-orders/{purchaseOrderId}/vendors/{vendorId}","href":"/api/reference/post_v1_purchase_orders_purchaseOrderId_vendors_vendorId"},{"title":"Detach a vendor from a purchase order","openapi":"DELETE /v1/purchase-orders/{purchaseOrderId}/vendors/{vendorId}","href":"/api/reference/delete_v1_purchase_orders_purchaseOrderId_vendors_vendorId"},{"title":"Receive every purchase-order line matching a target","openapi":"POST /v1/purchase-orders/bulk/receive","href":"/api/reference/post_v1_purchase_orders_bulk_receive"},{"title":"Set the status of every purchase order matching a target. Derived statuses are refused, see GET /v1/reference/statuses","openapi":"POST /v1/purchase-orders/bulk/status","href":"/api/reference/post_v1_purchase_orders_bulk_status"},{"title":"Archive or restore every purchase order matching a target","openapi":"POST /v1/purchase-orders/bulk/archive","href":"/api/reference/post_v1_purchase_orders_bulk_archive"}]},{"group":"Vendors","pages":[{"title":"Vendors","icon":"building","href":"/api/endpoints/vendors"},{"title":"Every purchase order raised on a vendor","openapi":"GET /v1/vendors/{vendorId}/purchase-orders","href":"/api/reference/get_v1_vendors_vendorId_purchase_orders"},{"title":"List vendors","openapi":"GET /v1/vendors","href":"/api/reference/get_v1_vendors"},{"title":"Create a vendor","openapi":"POST /v1/vendors","href":"/api/reference/post_v1_vendors"},{"title":"One vendor with addresses and contacts","openapi":"GET /v1/vendors/{vendorId}","href":"/api/reference/get_v1_vendors_vendorId"},{"title":"Update a vendor","openapi":"PATCH /v1/vendors/{vendorId}","href":"/api/reference/patch_v1_vendors_vendorId"},{"title":"Archive a vendor","openapi":"POST /v1/vendors/{vendorId}/archive","href":"/api/reference/post_v1_vendors_vendorId_archive"},{"title":"Restore an archived vendor","openapi":"POST /v1/vendors/{vendorId}/unarchive","href":"/api/reference/post_v1_vendors_vendorId_unarchive"},{"title":"Add an address to a vendor","openapi":"POST /v1/vendors/{vendorId}/addresses","href":"/api/reference/post_v1_vendors_vendorId_addresses"},{"title":"Update a vendor address","openapi":"PATCH /v1/vendor-addresses/{addressId}","href":"/api/reference/patch_v1_vendor_addresses_addressId"},{"title":"Delete a vendor address","openapi":"DELETE /v1/vendor-addresses/{addressId}","href":"/api/reference/delete_v1_vendor_addresses_addressId"},{"title":"Add a contact to a vendor","openapi":"POST /v1/vendors/{vendorId}/contacts","href":"/api/reference/post_v1_vendors_vendorId_contacts"},{"title":"Update a vendor contact","openapi":"PATCH /v1/vendor-contacts/{contactId}","href":"/api/reference/patch_v1_vendor_contacts_contactId"},{"title":"Delete a vendor contact","openapi":"DELETE /v1/vendor-contacts/{contactId}","href":"/api/reference/delete_v1_vendor_contacts_contactId"},{"title":"Activate or deactivate every vendor matching a target","openapi":"POST /v1/vendors/bulk/active","href":"/api/reference/post_v1_vendors_bulk_active"}]},{"group":"Proofs \u0026 mocks","pages":[{"title":"Proofs and mocks","icon":"stamp","href":"/api/endpoints/proofs"},{"title":"List mocks, filtered by job, quote or quote group. Not paginated","openapi":"GET /v1/mocks","href":"/api/reference/get_v1_mocks"},{"title":"Create a mock","openapi":"POST /v1/mocks","href":"/api/reference/post_v1_mocks"},{"title":"One mock by id","openapi":"GET /v1/mocks/{mockId}","href":"/api/reference/get_v1_mocks_mockId"},{"title":"Update a mock","openapi":"PATCH /v1/mocks/{mockId}","href":"/api/reference/patch_v1_mocks_mockId"},{"title":"Delete a mock","openapi":"DELETE /v1/mocks/{mockId}","href":"/api/reference/delete_v1_mocks_mockId"},{"title":"One proof with its full revision history","openapi":"GET /v1/proofs/{proofId}/history","href":"/api/reference/get_v1_proofs_proofId_history"},{"title":"Create a proof","openapi":"POST /v1/proofs","href":"/api/reference/post_v1_proofs"},{"title":"Update a proof","openapi":"PATCH /v1/proofs/{proofId}","href":"/api/reference/patch_v1_proofs_proofId"},{"title":"Delete a proof","openapi":"DELETE /v1/proofs/{proofId}","href":"/api/reference/delete_v1_proofs_proofId"},{"title":"Email a proof to the customer","openapi":"POST /v1/proofs/{proofId}/send","href":"/api/reference/post_v1_proofs_proofId_send"},{"title":"Email several proofs in one message","openapi":"POST /v1/proofs/send","href":"/api/reference/post_v1_proofs_send"},{"title":"Open a new revision of a proof","openapi":"POST /v1/proofs/{proofId}/revise","href":"/api/reference/post_v1_proofs_proofId_revise"},{"title":"Set a proof status directly, including approved","openapi":"POST /v1/proofs/{proofId}/status","href":"/api/reference/post_v1_proofs_proofId_status"},{"title":"Record the client’s decision on a proof","openapi":"POST /v1/proofs/{proofId}/client-decision","href":"/api/reference/post_v1_proofs_proofId_client_decision"},{"title":"Confirm the size split on a proof item","openapi":"POST /v1/proof-item-links/{proofItemLinkId}/size-split","href":"/api/reference/post_v1_proof_item_links_proofItemLinkId_size_split"}]},{"group":"Tasks","pages":[{"title":"Tasks","icon":"list-check","href":"/api/endpoints/tasks"},{"title":"Production tasks assigned to one person","openapi":"GET /v1/tasks/by-assignee","href":"/api/reference/get_v1_tasks_by_assignee"},{"title":"A task’s comments, checklist and attachments","openapi":"GET /v1/tasks/{taskId}/extras","href":"/api/reference/get_v1_tasks_taskId_extras"},{"title":"Create a production task","openapi":"POST /v1/tasks","href":"/api/reference/post_v1_tasks"},{"title":"Update a production task","openapi":"PATCH /v1/tasks/{taskId}","href":"/api/reference/patch_v1_tasks_taskId"},{"title":"Delete a production task","openapi":"DELETE /v1/tasks/{taskId}","description":"Requires the scope tasks.write.","href":"/api/reference/delete_v1_tasks_taskId"},{"title":"Patch every production task matching a target","openapi":"POST /v1/tasks/bulk/update","href":"/api/reference/post_v1_tasks_bulk_update"},{"title":"Delete every production task matching a target","openapi":"POST /v1/tasks/bulk/delete","description":"Requires the scope tasks.write.","href":"/api/reference/post_v1_tasks_bulk_delete"},{"title":"Comment on a production task","openapi":"POST /v1/tasks/{taskId}/comments","href":"/api/reference/post_v1_tasks_taskId_comments"},{"title":"Edit a task comment","openapi":"PATCH /v1/task-comments/{commentId}","href":"/api/reference/patch_v1_task_comments_commentId"},{"title":"Delete a task comment","openapi":"DELETE /v1/task-comments/{commentId}","href":"/api/reference/delete_v1_task_comments_commentId"},{"title":"Add a checklist item to a task","openapi":"POST /v1/tasks/{taskId}/checklist","href":"/api/reference/post_v1_tasks_taskId_checklist"},{"title":"Update a checklist item","openapi":"PATCH /v1/task-checklist-items/{itemId}","href":"/api/reference/patch_v1_task_checklist_items_itemId"},{"title":"Delete a checklist item","openapi":"DELETE /v1/task-checklist-items/{itemId}","href":"/api/reference/delete_v1_task_checklist_items_itemId"},{"title":"Attach a file to a task","openapi":"POST /v1/tasks/{taskId}/attachments","href":"/api/reference/post_v1_tasks_taskId_attachments"},{"title":"Remove a task attachment","openapi":"DELETE /v1/task-attachments/{attachmentId}","href":"/api/reference/delete_v1_task_attachments_attachmentId"}]},{"group":"Invoices","pages":[{"title":"Invoices","icon":"receipt","href":"/api/endpoints/invoices"},{"title":"A presigned link to the invoice PDF. Expires in 900 seconds","openapi":"GET /v1/invoices/{invoiceId}/pdf","href":"/api/reference/get_v1_invoices_invoiceId_pdf"},{"title":"One invoice","openapi":"GET /v1/invoices/{invoiceId}","href":"/api/reference/get_v1_invoices_invoiceId"},{"title":"Email an invoice to the customer","openapi":"POST /v1/invoices/{invoiceId}/send","href":"/api/reference/post_v1_invoices_invoiceId_send"},{"title":"Record an invoice as paid","openapi":"POST /v1/invoices/{invoiceId}/mark-paid","href":"/api/reference/post_v1_invoices_invoiceId_mark_paid"},{"title":"Undo a paid marking","openapi":"POST /v1/invoices/{invoiceId}/unmark-paid","href":"/api/reference/post_v1_invoices_invoiceId_unmark_paid"},{"title":"Void an invoice","openapi":"POST /v1/invoices/{invoiceId}/void","href":"/api/reference/post_v1_invoices_invoiceId_void"},{"title":"Refund an invoice","openapi":"POST /v1/invoices/{invoiceId}/refund","href":"/api/reference/post_v1_invoices_invoiceId_refund"},{"title":"Dismiss a customer’s payment claim","openapi":"POST /v1/invoices/{invoiceId}/dismiss-claim","href":"/api/reference/post_v1_invoices_invoiceId_dismiss_claim"},{"title":"Push an invoice into the shop’s Xero connection","openapi":"POST /v1/invoices/{invoiceId}/push/xero","href":"/api/reference/post_v1_invoices_invoiceId_push_xero"},{"title":"Push an invoice into the shop’s QuickBooks connection","openapi":"POST /v1/invoices/{invoiceId}/push/quickbooks","href":"/api/reference/post_v1_invoices_invoiceId_push_quickbooks"}]},{"group":"Documents \u0026 media","pages":[{"title":"Documents and media","icon":"file-arrow-up","href":"/api/endpoints/documents-and-media"},{"title":"Mint a presigned PUT for an upload. Expires in 900 seconds","openapi":"POST /v1/media/upload-url","href":"/api/reference/post_v1_media_upload_url"}]},{"group":"Custom fields \u0026 statuses","pages":[{"title":"Custom fields and statuses","icon":"sliders","href":"/api/endpoints/custom-fields-and-statuses"},{"title":"Create a custom field definition","openapi":"POST /v1/custom-fields","href":"/api/reference/post_v1_custom_fields"},{"title":"One custom field definition","openapi":"GET /v1/custom-fields/{fieldId}","href":"/api/reference/get_v1_custom_fields_fieldId"},{"title":"Update a custom field definition","openapi":"PATCH /v1/custom-fields/{fieldId}","href":"/api/reference/patch_v1_custom_fields_fieldId"},{"title":"Delete a custom field definition","openapi":"DELETE /v1/custom-fields/{fieldId}","href":"/api/reference/delete_v1_custom_fields_fieldId"},{"title":"List custom status definitions","openapi":"GET /v1/custom-statuses","href":"/api/reference/get_v1_custom_statuses"},{"title":"Create a custom status definition","openapi":"POST /v1/custom-statuses","href":"/api/reference/post_v1_custom_statuses"},{"title":"One custom status definition","openapi":"GET /v1/custom-statuses/{statusId}","href":"/api/reference/get_v1_custom_statuses_statusId"},{"title":"Update a custom status definition","openapi":"PATCH /v1/custom-statuses/{statusId}","href":"/api/reference/patch_v1_custom_statuses_statusId"},{"title":"Delete a custom status definition. Refuses with 409 when an automation rule targets it","openapi":"DELETE /v1/custom-statuses/{statusId}","href":"/api/reference/delete_v1_custom_statuses_statusId"},{"title":"List custom field definitions","openapi":"GET /v1/custom-fields","href":"/api/reference/get_v1_custom_fields"}]},{"group":"Webhooks","pages":[{"title":"Webhooks","icon":"bell","href":"/api/endpoints/webhooks"},{"title":"List this credential’s webhook subscriptions","openapi":"GET /v1/webhooks","href":"/api/reference/get_v1_webhooks"},{"title":"Subscribe to an event. Returns the signing secret ONCE. Re-subscribing the same event and URL is idempotent","openapi":"POST /v1/webhooks","href":"/api/reference/post_v1_webhooks"},{"title":"One webhook subscription","openapi":"GET /v1/webhooks/{webhookId}","href":"/api/reference/get_v1_webhooks_webhookId"},{"title":"Unsubscribe. Idempotent, so deleting an unknown subscription still succeeds","openapi":"DELETE /v1/webhooks/{webhookId}","href":"/api/reference/delete_v1_webhooks_webhookId"},{"title":"Rotate the signing secret. The old one keeps verifying for 48 hours so you can deploy without dropping payloads","openapi":"POST /v1/webhooks/{webhookId}/rotate-secret","href":"/api/reference/post_v1_webhooks_webhookId_rotate_secret"},{"title":"Delivery history for a subscription, with a failure reason you can act on. Never a response body","openapi":"GET /v1/webhooks/{webhookId}/deliveries","href":"/api/reference/get_v1_webhooks_webhookId_deliveries"},{"title":"Replay a failed delivery. Without this, an hour of downtime means those events are gone for good","openapi":"POST /v1/webhooks/{webhookId}/deliveries/{deliveryId}/retry","href":"/api/reference/post_v1_webhooks_webhookId_deliveries_deliveryId_retry"}]}]}]},{"tab":"Integrations","icon":"code-compare","pages":[{"title":"Integrations","href":"/integrations/overview"}]},{"tab":"MCP","icon":"openai","pages":[{"title":"MCP","href":"/mcp/overview"}]},{"tab":"Release Notes","icon":"flag","pages":[{"title":"Release Notes","href":"/release-notes/2026-10-12"}]}]},"title":"Patch every production task matching a target - PRINTOOLS Docs","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-rfhihCWU.js","utils-BmH1XFxk.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BcNsxPKB.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BAES3tkd.js","snippetPresets-DCMQBKLP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D6l_bzE9.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BOktbnNh.js","shallow-BCs8SgM7.js","getApiPlaygroundDisplay-DEmW5bJB.js","CodeSnippet-CpZOpB9C.js","CodeSnippets-BOBDqibl.js","Page-D5fEM6aW.js","getPastedJson-DH2JBvmr.js","icon-BBJH-kKh.js","MethodPill-D2Sd5NLC.js","DuplicateIcon-CGgfL2qN.js","createIcon-BKudBBzi.js","DynamicMarkdown-85clUA0i.js","SectionHeading-D0JiMgDx.js","axios-vUo_bRtp.js","Markdown-Cfiy0xZO.js","clsx-rL8ZCCw4.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-aeztFa9U.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BywkCr5C.js"]}