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.
{"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_decorations_bulk_create","slug":"/api/reference/post_v1_decorations_bulk_create","pageMetadata":{"title":"Create many decorations in one call","openapi":"POST /v1/decorations/bulk/create","description":"Requires the scope decorations.write.","href":"/api/reference/post_v1_decorations_bulk_create"},"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 decorations.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:`decorations.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":"Create many decorations in one call","openapi":"POST /v1/decorations/bulk/create","description":"Requires the scope decorations.write.","href":"/api/reference/post_v1_decorations_bulk_create"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Create many decorations in one call.","operationId":"post_v1_decorations_bulk_create","tags":["decorations"],"description":"Requires the scope decorations.write.","security":["e2a59dbc-b552-46a4-be04-ed9839cd3f80","11ab7e0a-7561-4a1a-9f2b-6badce88042c"],"x-printools-required-scopes":["decorations.write"],"parameters":["674f1762-f282-4dbc-af41-7b61bd7264ee","0dc1a0b7-d6c5-4b5c-9895-2ac882394244"],"requestBody":"8d2a5299-d271-4659-a5c2-08c83fe90dc8","responses":{"201":"0f4bdefb-54dc-407b-9c26-0a32616605f5","400":"96d2a263-b0ec-49d4-931e-b03a9987f970","401":"10c9dae0-1ad2-48c6-b7a4-de26faac62b6","403":"e752f664-6273-44ce-89fb-3b7fd7b5fb14","404":"001326a1-d337-47a2-9f37-548f13a7b0d0","409":"6a485b3e-ea02-4c56-94f8-6d54717a3fad","413":"62af0f67-5789-4660-a078-416b7655de83","429":"d131a191-7a54-4789-912c-acc592553228","500":"b3970676-247d-4002-95e3-f5975cb03eaa"},"x-codeSamples":[{"lang":"curl","label":"Tenant credential","source":"curl --request POST 'https://api.printools.io/v1/decorations/bulk/create' \\\n --header 'X-API-Key: $PRINTOOLS_API_KEY' \\\n --header 'Content-Type: application/json' \\\n --data '{\"input\":[{\"name\":\"example\",\"method\":\"screen_printing\",\"description\":\"example\",\"setupCost\":1.5,\"screenCount\":1,\"priceBreaks\":[{\"quantityRange\":\"example\",\"price\":1.5}],\"notes\":\"example\"}]}'"}],"method":"post","type":"path","servers":["beaaf7be-9258-41cf-929a-55d51e0689b1"],"path":"/v1/decorations/bulk/create","baseUrlOptions":["https://api.printools.io"],"title":"Create many decorations in one call.","codeSamples":[{"label":"Tenant credential","lang":"curl","source":"curl --request POST 'https://api.printools.io/v1/decorations/bulk/create' \\\n --header 'X-API-Key: $PRINTOOLS_API_KEY' \\\n --header 'Content-Type: application/json' \\\n --data '{\"input\":[{\"name\":\"example\",\"method\":\"screen_printing\",\"description\":\"example\",\"setupCost\":1.5,\"screenCount\":1,\"priceBreaks\":[{\"quantityRange\":\"example\",\"price\":1.5}],\"notes\":\"example\"}]}'"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"674f1762-f282-4dbc-af41-7b61bd7264ee":{"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."},"0dc1a0b7-d6c5-4b5c-9895-2ac882394244":{"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":{"oneOf":[{"type":"object","description":"Provide one array field. input is preferred; items remains accepted for compatibility. The live bulk row limit applies.","required":["input"],"properties":{"input":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.input.items.[INDEX].name","typeLabel":"string"},"method":{"type":"string","enum":["screen_printing","embroidery","dtg","heat_transfer","sublimation","vinyl","other"],"isRequired":true,"uniqueKey":"oneOf.0.input.items.[INDEX].method","typeLabel":"enum\u003cstring>"},"description":{"type":"string","uniqueKey":"oneOf.0.input.items.[INDEX].description","typeLabel":"string"},"setupCost":{"type":"number","uniqueKey":"oneOf.0.input.items.[INDEX].setupCost","typeLabel":"number"},"screenCount":{"type":"integer","uniqueKey":"oneOf.0.input.items.[INDEX].screenCount","typeLabel":"integer"},"priceBreaks":{"type":"array","items":{"type":"object","properties":{"quantityRange":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.input.items.[INDEX].priceBreaks.items.[INDEX].quantityRange","typeLabel":"string"},"price":{"type":"number","isRequired":true,"uniqueKey":"oneOf.0.input.items.[INDEX].priceBreaks.items.[INDEX].price","typeLabel":"number"}},"required":["quantityRange","price"],"uniqueKey":"oneOf.0.input.items.[INDEX].priceBreaks.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.input.items.[INDEX].priceBreaks","typeLabel":"object[]"},"notes":{"type":"string","uniqueKey":"oneOf.0.input.items.[INDEX].notes","typeLabel":"string"},"isActive":{"type":"boolean","uniqueKey":"oneOf.0.input.items.[INDEX].isActive","typeLabel":"boolean"},"vendorId":{"type":"string","uniqueKey":"oneOf.0.input.items.[INDEX].vendorId","typeLabel":"string"}},"required":["name","method"],"uniqueKey":"oneOf.0.input.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.0.input","typeLabel":"object[]"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","description":"Provide one array field. input is preferred; items remains accepted for compatibility. The live bulk row limit applies.","required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.\\items.items.[INDEX].name","typeLabel":"string"},"method":{"type":"string","enum":["screen_printing","embroidery","dtg","heat_transfer","sublimation","vinyl","other"],"isRequired":true,"uniqueKey":"oneOf.1.\\items.items.[INDEX].method","typeLabel":"enum\u003cstring>"},"description":{"type":"string","uniqueKey":"oneOf.1.\\items.items.[INDEX].description","typeLabel":"string"},"setupCost":{"type":"number","uniqueKey":"oneOf.1.\\items.items.[INDEX].setupCost","typeLabel":"number"},"screenCount":{"type":"integer","uniqueKey":"oneOf.1.\\items.items.[INDEX].screenCount","typeLabel":"integer"},"priceBreaks":{"type":"array","items":{"type":"object","properties":{"quantityRange":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.\\items.items.[INDEX].priceBreaks.items.[INDEX].quantityRange","typeLabel":"string"},"price":{"type":"number","isRequired":true,"uniqueKey":"oneOf.1.\\items.items.[INDEX].priceBreaks.items.[INDEX].price","typeLabel":"number"}},"required":["quantityRange","price"],"uniqueKey":"oneOf.1.\\items.items.[INDEX].priceBreaks.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.1.\\items.items.[INDEX].priceBreaks","typeLabel":"object[]"},"notes":{"type":"string","uniqueKey":"oneOf.1.\\items.items.[INDEX].notes","typeLabel":"string"},"isActive":{"type":"boolean","uniqueKey":"oneOf.1.\\items.items.[INDEX].isActive","typeLabel":"boolean"},"vendorId":{"type":"string","uniqueKey":"oneOf.1.\\items.items.[INDEX].vendorId","typeLabel":"string"}},"required":["name","method"],"uniqueKey":"oneOf.1.\\items.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.1.\\items","typeLabel":"object[]"}},"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"example":{"title":"example","value":{"input":[{"name":"example","method":"screen_printing","description":"example","setupCost":1.5,"screenCount":1,"priceBreaks":[{"quantityRange":"example","price":1.5}],"notes":"example"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"0f4bdefb-54dc-407b-9c26-0a32616605f5":{"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":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].name","typeLabel":"string"},"method":{"type":"string","enum":["screen_printing","embroidery","dtg","heat_transfer","sublimation","vinyl","other"],"isRequired":true,"uniqueKey":"data.items.[INDEX].method","typeLabel":"enum\u003cstring>"},"screenCount":{"type":"integer","isRequired":true,"uniqueKey":"data.items.[INDEX].screenCount","typeLabel":"integer"},"priceBreaks":{"type":"array","items":{"type":"object","properties":{"quantityRange":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].priceBreaks.items.[INDEX].quantityRange","typeLabel":"string"},"price":{"type":"number","isRequired":true,"uniqueKey":"data.items.[INDEX].priceBreaks.items.[INDEX].price","typeLabel":"number"}},"required":["quantityRange","price"],"uniqueKey":"data.items.[INDEX].priceBreaks.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.items.[INDEX].priceBreaks","typeLabel":"object[]"},"isActive":{"type":"boolean","isRequired":true,"uniqueKey":"data.items.[INDEX].isActive","typeLabel":"boolean"},"createdAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.items.[INDEX].updatedAt","typeLabel":"string\u003cdate-time>"},"description":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].description","typeLabel":"string | null"},"setupCost":{"type":"number","description":"Present only when the credential includes the costs.read scope.","uniqueKey":"data.items.[INDEX].setupCost","typeLabel":"number"},"notes":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].notes.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].notes.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].notes","typeLabel":"string | null"},"vendorId":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendorId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendorId.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendorId","typeLabel":"string | null"},"vendor":{"oneOf":[{"type":"object","required":["id","name","kind","serviceTypes","isActive","isManaged","createdAt","updatedAt","contacts","addresses"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.name","typeLabel":"string"},"kind":{"type":"string","enum":["InventorySupplier","OutsourceVendor","Both"],"isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"serviceTypes":{"type":"array","items":{"type":"string","enum":["ScreenPrint","Embroidery","Digitising","DTF","Other"],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.serviceTypes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.serviceTypes","typeLabel":"enum\u003cstring>[]"},"isActive":{"type":"boolean","isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.isActive","typeLabel":"boolean"},"isManaged":{"type":"boolean","description":"True when PrinTools provisions this vendor rather than the shop creating it\n— currently only the AS Colour record every org is seeded with, and which the\ngarment catalogue links its AS Colour styles to. A managed vendor is edited\nlike any other (the account number, contacts and addresses on it are the\nshop's own), but it cannot be archived: the catalogue's link to it ignores\n`isActive`, so archiving would hide nothing and only break purchase orders\nfor every AS Colour style.","isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.isManaged","typeLabel":"boolean"},"createdAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.updatedAt","typeLabel":"string\u003cdate-time>"},"contacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].id","typeLabel":"string"},"vendorId":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].vendorId","typeLabel":"string"},"createdAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].updatedAt","typeLabel":"string\u003cdate-time>"},"firstName":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].firstName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].firstName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].firstName","typeLabel":"string | null"},"lastName":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].lastName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].lastName.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].lastName","typeLabel":"string | null"},"email":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].email.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].email.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].email","typeLabel":"string | null"},"phone":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].phone.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].phone.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].phone","typeLabel":"string | null"},"role":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].role.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].role.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX].role","typeLabel":"string | null"}},"required":["id","vendorId","createdAt","updatedAt"],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.contacts","typeLabel":"object[]"},"addresses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].id","typeLabel":"string"},"vendorId":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].vendorId","typeLabel":"string"},"createdAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].updatedAt","typeLabel":"string\u003cdate-time>"},"label":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].label.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].label.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].label","typeLabel":"string | null"},"street":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].street.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].street.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].street","typeLabel":"string | null"},"city":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].city.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].city.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].city","typeLabel":"string | null"},"state":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].state.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].state.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].state","typeLabel":"string | null"},"postcode":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].postcode.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].postcode.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].postcode","typeLabel":"string | null"},"country":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].country.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].country.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX].country","typeLabel":"string | null"}},"required":["id","vendorId","createdAt","updatedAt"],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.addresses","typeLabel":"object[]"},"logoUrl":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.logoUrl.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.logoUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.logoUrl","typeLabel":"string | null"},"ordersWebsite":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.ordersWebsite.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.ordersWebsite.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.ordersWebsite","typeLabel":"string | null"},"accountNumber":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.accountNumber.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.accountNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.accountNumber","typeLabel":"string | null"},"defaultLeadTimeDays":{"oneOf":[{"type":"integer","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.defaultLeadTimeDays.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.defaultLeadTimeDays.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.defaultLeadTimeDays","typeLabel":"integer | null"},"minimumOrder":{"oneOf":[{"type":"number","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.minimumOrder.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.minimumOrder.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.minimumOrder","typeLabel":"number | null"},"proximityNotes":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.proximityNotes.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.proximityNotes.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.proximityNotes","typeLabel":"string | null"},"notes":{"oneOf":[{"type":"string","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.notes.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.0.notes.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor.oneOf.0.notes","typeLabel":"string | null"}},"uniqueKey":"data.items.[INDEX].vendor.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"data.items.[INDEX].vendor.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].vendor","typeLabel":"object | null"}},"required":["id","name","method","screenCount","priceBreaks","isActive","createdAt","updatedAt"],"uniqueKey":"data.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":true,"message":"OK","data":[{"id":"\u003cstring>","name":"\u003cstring>","method":"screen_printing","screenCount":123,"priceBreaks":[{"quantityRange":"\u003cstring>","price":123}],"isActive":true,"createdAt":"2023-11-07T05:31:56Z","updatedAt":"2023-11-07T05:31:56Z","description":"\u003cstring>","setupCost":123,"notes":"\u003cstring>","vendorId":"\u003cstring>","vendor":{"id":"\u003cstring>","name":"\u003cstring>","kind":"InventorySupplier","serviceTypes":["ScreenPrint"],"isActive":true,"isManaged":true,"createdAt":"2023-11-07T05:31:56Z","updatedAt":"2023-11-07T05:31:56Z","contacts":[{"id":"\u003cstring>","vendorId":"\u003cstring>","createdAt":"2023-11-07T05:31:56Z","updatedAt":"2023-11-07T05:31:56Z","firstName":"\u003cstring>","lastName":"\u003cstring>","email":"\u003cstring>","phone":"\u003cstring>","role":"\u003cstring>"}],"addresses":[{"id":"\u003cstring>","vendorId":"\u003cstring>","createdAt":"2023-11-07T05:31:56Z","updatedAt":"2023-11-07T05:31:56Z","label":"\u003cstring>","street":"\u003cstring>","city":"\u003cstring>","state":"\u003cstring>","postcode":"\u003cstring>","country":"\u003cstring>"}],"logoUrl":"\u003cstring>","ordersWebsite":"\u003cstring>","accountNumber":"\u003cstring>","defaultLeadTimeDays":123,"minimumOrder":123,"proximityNotes":"\u003cstring>","notes":"\u003cstring>"}}]}}},"exampleType":"generated"}},"exampleType":"generated"},"96d2a263-b0ec-49d4-931e-b03a9987f970":{"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"},"10c9dae0-1ad2-48c6-b7a4-de26faac62b6":{"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"},"e752f664-6273-44ce-89fb-3b7fd7b5fb14":{"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"},"001326a1-d337-47a2-9f37-548f13a7b0d0":{"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"},"6a485b3e-ea02-4c56-94f8-6d54717a3fad":{"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"},"62af0f67-5789-4660-a078-416b7655de83":{"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"},"d131a191-7a54-4789-912c-acc592553228":{"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"},"b3970676-247d-4002-95e3-f5975cb03eaa":{"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":{"e2a59dbc-b552-46a4-be04-ed9839cd3f80":{"tenantApiKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Tenant credential. This is sufficient by itself.","scopes":[]}},"11ab7e0a-7561-4a1a-9f2b-6badce88042c":{"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":"Create many decorations in one call - PRINTOOLS Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-08T12:10:21.527Z","originalFileLocation":"api/reference/post_v1_decorations_bulk_create.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 decorations.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=\"Create many decorations in one call - PRINTOOLS Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Requires the scope decorations.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_decorations_bulk_create\">\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=Decorations\u0026amp;title=Create+many+decorations+in+one+call\u0026amp;description=Requires+the+scope+decorations.write.\u0026amp;theme=1264f79c0fa4bc489a663c38\u0026amp;signature=adcb606faf6ad1592a0e936467f3e61c11fd08c0c48b0854ba3780e7a90df29c\">\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=\"Create many decorations in one call - PRINTOOLS Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Requires the scope decorations.write.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://printools-docs.mintlify.app/_mintlify/api/og/v2?division=Decorations\u0026amp;title=Create+many+decorations+in+one+call\u0026amp;description=Requires+the+scope+decorations.write.\u0026amp;theme=1264f79c0fa4bc489a663c38\u0026amp;signature=adcb606faf6ad1592a0e936467f3e61c11fd08c0c48b0854ba3780e7a90df29c\">\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_decorations_bulk_create\">\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_decorations_bulk_create.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_decorations_bulk_create#webpage\",\"url\":\"https://docs.printools.io/api/reference/post_v1_decorations_bulk_create\",\"name\":\"Create many decorations in one call\",\"description\":\"Requires the scope decorations.write.\",\"dateModified\":\"2026-09-08T12:10:21.527Z\",\"isPartOf\":{\"@id\":\"https://docs.printools.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.printools.io/api/reference/post_v1_decorations_bulk_create#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.printools.io/api/reference/post_v1_decorations_bulk_create#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.printools.io/api/endpoints/account-and-reference\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Decorations\",\"item\":\"https://docs.printools.io/api/endpoints/decorations\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create many decorations in one call\",\"item\":\"https://docs.printools.io/api/reference/post_v1_decorations_bulk_create\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.printools.io/api/reference/post_v1_decorations_bulk_create#apireference\",\"headline\":\"Create many decorations in one call\",\"name\":\"Create many decorations in one call\",\"description\":\"Requires the scope decorations.write.\",\"url\":\"https://docs.printools.io/api/reference/post_v1_decorations_bulk_create\",\"mainEntityOfPage\":{\"@id\":\"https://docs.printools.io/api/reference/post_v1_decorations_bulk_create#webpage\"},\"dateModified\":\"2026-09-08T12:10:21.527Z\",\"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}","description":"Requires the scope decorations.write.","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","description":"Requires the scope decorations.write.","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}","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","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":"Create many decorations in one call - 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"]}