Ersetzt alle Komponentenzuordnungen der Lieferung durch die übergebenen Gruppen.
Alle component_ids müssen zum Projekt der Lieferung gehören; innerhalb einer Gruppe müssen sie eindeutig sein.
Verteilungswerte müssen endliche, nicht negative Zahlen sein.
Gruppen, deren distribution leer ist oder nur Nullen enthält, werden ignoriert (wie in der Web-App).
Mit einem leeren Array groups werden alle Zuordnungen entfernt.
Replaces all component assignments for the delivery with the provided groups — equivalent to saving the component overview in the web app. Each group typically combines several project components (often one per component type) that share the same quantity split across delivery line items.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"comstruct API Dokumentation","colors":{"primary":"#2F6879","light":"#3A8599","dark":"#1E4A57"},"logo":{"light":"https://mintcdn.com/comstruct/Jpsyju8lznqRSEZJ/logo/light.svg?fit=max\u0026auto=format\u0026n=Jpsyju8lznqRSEZJ\u0026q=85\u0026s=acbbee3c044994a3e7752740782d923f","dark":"https://mintcdn.com/comstruct/Jpsyju8lznqRSEZJ/logo/dark.svg?fit=max\u0026auto=format\u0026n=Jpsyju8lznqRSEZJ\u0026q=85\u0026s=3849d724919d807467f3b58d490d50c0"},"favicon":"https://mintcdn.com/comstruct/CqrhxzMG7_sRCFwK/favicon.png?fit=max\u0026auto=format\u0026n=CqrhxzMG7_sRCFwK\u0026q=85\u0026s=ff5a12229b0e3075a0e33fe7354ddae3","api":{},"navbar":{"links":[{"href":"mailto:support@comstruct.com","label":"Support"}],"primary":{"type":"button","label":"App öffnen","href":"https://app.comstruct.com"}},"footer":{"socials":{"linkedin":"https://linkedin.com/company/comstruct","website":"https://comstruct.com"}},"contextual":{"options":["copy","view","chatgpt","claude","cursor"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Support","icon":"envelope","href":"mailto:support@comstruct.com"}]},"languages":[{"language":"de","default":true,"href":""},{"language":"en","href":"en"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"comstruct","hasAudioNarration":false,"actualSubdomain":"comstruct","customDomains":["developer.comstruct.com"],"gitSource":{"type":"github","owner":"comstruct-engineering","repo":"comstruct-one","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af339cb0d36c20f768025e9","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"de","tag":"API-Referenz","count":69},{"language":"en","tag":"API Reference","count":69},{"language":"de","tag":"Rechnungs-Dimensionen","count":15},{"language":"en","tag":"Invoice dimensions","count":15},{"language":"de","tag":"Lieferungen","count":11},{"language":"en","tag":"Deliveries","count":11},{"language":"de","tag":"Stammdaten","count":10},{"language":"en","tag":"Master data","count":10},{"language":"de","tag":"Rechnungen","count":9},{"language":"de","tag":"Projekte","count":9},{"language":"en","tag":"Invoices","count":9},{"language":"en","tag":"Projects","count":9},{"language":"de","tag":"Erste Schritte","count":5},{"language":"en","tag":"Getting started","count":5},{"language":"de","tag":"Integrationsleitfäden","count":4},{"language":"en","tag":"Integration guides","count":4},{"language":"de","tag":"Bestellungen","count":3},{"language":"de","tag":"Lieferanten","count":3},{"language":"en","tag":"Purchase orders","count":3},{"language":"en","tag":"Suppliers","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":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":"custom-rbac-roles","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":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","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":"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":"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":"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":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","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":"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":"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":"turbopuffer-dual-write","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},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"en/api-reference/deliveries-components-put","slug":"/en/api-reference/deliveries-components-put","pageMetadata":{"title":"Replace delivery components","openapi":"PUT /deliveries/{id}/components","description":"**Erforderliche Berechtigungen:** `deliveries:patch`\n\nErsetzt alle Komponentenzuordnungen der Lieferung durch die übergebenen Gruppen.\nAlle `component_ids` müssen zum Projekt der Lieferung gehören; innerhalb einer Gruppe müssen sie eindeutig sein.\nVerteilungswerte müssen endliche, nicht negative Zahlen sein.\nGruppen, deren `distribution` leer ist oder nur Nullen enthält, werden ignoriert (wie in der Web-App).\nMit einem leeren Array `groups` werden alle Zuordnungen entfernt.\n","href":"/en/api-reference/deliveries-components-put"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Erforderliche Berechtigungen:\"\n }), \" \", _jsx(_components.code, {\n children: \"deliveries:patch\"\n })]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Ersetzt alle Komponentenzuordnungen der Lieferung durch die übergebenen Gruppen.\\nAlle \", _jsx(_components.code, {\n children: \"component_ids\"\n }), \" müssen zum Projekt der Lieferung gehören; innerhalb einer Gruppe müssen sie eindeutig sein.\\nVerteilungswerte müssen endliche, nicht negative Zahlen sein.\\nGruppen, deren \", _jsx(_components.code, {\n children: \"distribution\"\n }), \" leer ist oder nur Nullen enthält, werden ignoriert (wie in der Web-App).\\nMit einem leeren Array \", _jsx(_components.code, {\n children: \"groups\"\n }), \" werden alle Zuordnungen entfernt.\"]\n })]\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{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsxs(_components.p,{children:[`Replaces `,_jsx(_components.strong,{children:`all`}),` component assignments for the delivery with the provided groups — equivalent to saving the component overview in the web app. Each group typically combines several project components (often one per component type) that share the same quantity split across delivery line items.`]}),`\n`,_jsx(Heading,{level:`2`,id:`permissions`,children:`Permissions`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Scope`}),_jsx(_components.th,{children:`Tenant type`})]})}),_jsx(_components.tbody,{children:_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`deliveries:patch`})}),_jsxs(_components.td,{children:[`Customer only (`,_jsx(_components.code,{children:`CUSTOMER_ONLY`}),`)`]})]})})]}),`\n`,_jsx(_components.p,{children:`The API key must be linked to a customer. Supplier API keys cannot use this endpoint.`}),`\n`,_jsx(Heading,{level:`2`,id:`request-body`,children:`Request body`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Description`})]})}),_jsx(_components.tbody,{children:_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`groups`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`array`})}),_jsxs(_components.td,{children:[`List of groups; `,_jsx(_components.code,{children:`[]`}),` clears all assignments`]})]})})]}),`\n`,_jsxs(Heading,{level:`3`,id:`per-group-groups`,children:[`Per group (`,_jsx(_components.code,{children:`groups[]`}),`)`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`component_ids`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`number[]`})}),_jsx(_components.td,{children:`Project component IDs; at least one per group, unique within the group`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`distribution`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`object`})}),_jsxs(_components.td,{children:[`Map from delivery line item title (`,_jsx(_components.code,{children:`title`}),` on the line item) to a finite non-negative quantity`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`validation-and-behavior`,children:`Validation and behavior`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Every `,_jsx(_components.code,{children:`component_id`}),` must belong to the delivery’s `,_jsx(_components.strong,{children:`project`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Distribution values must be `,_jsx(_components.strong,{children:`finite, non-negative`}),` numbers.`]}),`\n`,_jsxs(_components.li,{children:[`Groups whose `,_jsx(_components.code,{children:`distribution`}),` is empty or contains only zeros are `,_jsx(_components.strong,{children:`skipped`}),` (same as the web app).`]}),`\n`,_jsxs(_components.li,{children:[`The response matches `,_jsx(_components.strong,{children:`GET`}),` `,_jsx(_components.code,{children:`/deliveries/{id}/components`}),` (including server-assigned `,_jsx(_components.code,{children:`group_id`}),` and enriched component metadata).`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`response-codes`,children:`Response codes`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`200`})}),_jsx(_components.td,{children:`Components saved; body same shape as GET`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:`Invalid body or components not on the delivery’s project`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`403`})}),_jsx(_components.td,{children:`Forbidden — delivery belongs to another customer`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`404`})}),_jsx(_components.td,{children:`Delivery not found`})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Replace delivery components","openapi":"PUT /deliveries/{id}/components","description":"**Erforderliche Berechtigungen:** `deliveries:patch`\n\nErsetzt alle Komponentenzuordnungen der Lieferung durch die übergebenen Gruppen.\nAlle `component_ids` müssen zum Projekt der Lieferung gehören; innerhalb einer Gruppe müssen sie eindeutig sein.\nVerteilungswerte müssen endliche, nicht negative Zahlen sein.\nGruppen, deren `distribution` leer ist oder nur Nullen enthält, werden ignoriert (wie in der Web-App).\nMit einem leeren Array `groups` werden alle Zuordnungen entfernt.\n","href":"/en/api-reference/deliveries-components-put"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"Permissions","slug":"permissions","depth":2,"children":[]},{"title":"Request body","slug":"request-body","depth":2,"children":[{"title":"Per group (groups[])","slug":"per-group-groups","depth":3,"children":[]}]},{"title":"Validation and behavior","slug":"validation-and-behavior","depth":2,"children":[]},{"title":"Response codes","slug":"response-codes","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"setDeliveryComponents","summary":"Lieferkomponenten ersetzen","description":"**Erforderliche Berechtigungen:** `deliveries:patch`\n\nErsetzt alle Komponentenzuordnungen der Lieferung durch die übergebenen Gruppen.\nAlle `component_ids` müssen zum Projekt der Lieferung gehören; innerhalb einer Gruppe müssen sie eindeutig sein.\nVerteilungswerte müssen endliche, nicht negative Zahlen sein.\nGruppen, deren `distribution` leer ist oder nur Nullen enthält, werden ignoriert (wie in der Web-App).\nMit einem leeren Array `groups` werden alle Zuordnungen entfernt.\n","tags":["Deliveries (Customer)"],"parameters":["49c9e895-dae6-4895-9fe2-e4e5613b25f4"],"security":["4223083c-9713-4746-8a22-504f5fabd771"],"requestBody":"7f0f4538-7c5b-44a0-be06-53ce52096e53","responses":{"200":"29fb8110-a74b-46b9-9dc6-a0db062a36b8","400":"293e6b65-457c-4870-a78a-d6c0094a1ea4","403":"fcfbeff6-b63f-46ad-a4fe-c1968df4b7d9","404":"43131a4f-f74a-445c-b403-ebf4ffd26eb2"},"method":"put","type":"path","servers":["27bdc885-654c-42d2-b8de-7d04f298bbbd","91c701c1-ebe7-4fa2-b078-ea277e03dd21"],"path":"/deliveries/{id}/components","baseUrlOptions":["https://api.comstruct.com/v1","https://api.comstruct.com"],"title":"Lieferkomponenten ersetzen","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"49c9e895-dae6-4895-9fe2-e4e5613b25f4":{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","isRequired":true,"description":"Lieferungs-ID (UUID)","uniqueKey":"","typeLabel":"string\u003cuuid>"},"description":"Lieferungs-ID (UUID)"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["groups"],"properties":{"groups":{"type":"array","items":{"type":"object","required":["component_ids","distribution"],"properties":{"component_ids":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"integer","uniqueKey":"groups.items.[INDEX].component_ids.items.[INDEX]","typeLabel":"integer"},"description":"IDs der Projektkomponenten in dieser Gruppe","example":[42,17],"isRequired":true,"uniqueKey":"groups.items.[INDEX].component_ids","typeLabel":"integer[]"},"distribution":{"type":"object","additionalProperties":{"type":"number","uniqueKey":"groups.items.[INDEX].distribution.additionalProperties","typeLabel":"number"},"description":"Mengen je Positionsbezeichnung der Lieferung (Schlüssel = `title` der Position)","example":{"Beton C30/37":5.5},"isRequired":true,"uniqueKey":"groups.items.[INDEX].distribution","typeLabel":"object"}},"uniqueKey":"groups.items.[INDEX]","typeLabel":"object"},"description":"Liste der Komponentengruppen; leeres Array entfernt alle Zuordnungen","isRequired":true,"uniqueKey":"groups","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"two_groups":{"title":"two_groups","value":{"groups":[{"component_ids":[42,17],"distribution":{"Beton C30/37":5.5,"Betonpumpe":1}},{"component_ids":[99],"distribution":{"Beton C25/30":3}}]}},"clear_all":{"title":"clear_all","value":{"groups":[]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"29fb8110-a74b-46b9-9dc6-a0db062a36b8":{"description":"Komponentengruppen nach der Aktualisierung (gleiche Struktur wie GET)","content":{"application/json":{"schema":{"type":"object","required":["groups"],"properties":{"groups":{"type":"array","items":{"type":"object","properties":{"group_id":{"type":"string","format":"uuid","description":"Gruppenkennung, die alle Komponenten dieser Gruppe teilen","uniqueKey":"groups.items.[INDEX].group_id","typeLabel":"string\u003cuuid>"},"distribution":{"oneOf":[{"type":"object","additionalProperties":{"type":"number","uniqueKey":"groups.items.[INDEX].distribution.oneOf.0.additionalProperties","typeLabel":"number"},"description":"Mengen je Positionsbezeichnung der Lieferung (Schlüssel = `title` der Position)","example":{"Beton C30/37":5.5},"uniqueKey":"groups.items.[INDEX].distribution.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":{"type":"number","uniqueKey":"groups.items.[INDEX].distribution.oneOf.1.additionalProperties","typeLabel":"number"},"description":"Mengen je Positionsbezeichnung der Lieferung (Schlüssel = `title` der Position)","example":{"Beton C30/37":5.5},"uniqueKey":"groups.items.[INDEX].distribution.oneOf.1","typeLabel":"null"}],"uniqueKey":"groups.items.[INDEX].distribution","typeLabel":"object | null"},"components":{"type":"array","description":"Eine Zeile pro Projektkomponente in dieser Gruppe","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"ID der Zuordnungszeile","uniqueKey":"groups.items.[INDEX].components.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"component_id":{"type":"integer","description":"ID der Projektkomponente","uniqueKey":"groups.items.[INDEX].components.items.[INDEX].component_id","typeLabel":"integer"},"component_title":{"type":"string","description":"Titel der Projektkomponente","uniqueKey":"groups.items.[INDEX].components.items.[INDEX].component_title","typeLabel":"string"},"component_type_id":{"oneOf":[{"type":"string","format":"uuid","description":"ID des Komponententyps (Kategorie)","uniqueKey":"groups.items.[INDEX].components.items.[INDEX].component_type_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"ID des Komponententyps (Kategorie)","uniqueKey":"groups.items.[INDEX].components.items.[INDEX].component_type_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"groups.items.[INDEX].components.items.[INDEX].component_type_id","typeLabel":"string\u003cuuid> | null"},"component_type_title":{"oneOf":[{"type":"string","description":"Titel des Komponententyps (Kategorie)","uniqueKey":"groups.items.[INDEX].components.items.[INDEX].component_type_title.oneOf.0","typeLabel":"string"},{"type":"null","description":"Titel des Komponententyps (Kategorie)","uniqueKey":"groups.items.[INDEX].components.items.[INDEX].component_type_title.oneOf.1","typeLabel":"null"}],"uniqueKey":"groups.items.[INDEX].components.items.[INDEX].component_type_title","typeLabel":"string | null"}},"uniqueKey":"groups.items.[INDEX].components.items.[INDEX]","typeLabel":"object"},"uniqueKey":"groups.items.[INDEX].components","typeLabel":"object[]"}},"uniqueKey":"groups.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"groups","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"groups":[{"group_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","distribution":{"Beton C30/37":5.5},"components":[{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","component_id":123,"component_title":"\u003cstring>","component_type_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","component_type_title":"\u003cstring>"}]}]}}},"exampleType":"generated"}},"exampleType":"generated"},"293e6b65-457c-4870-a78a-d6c0094a1ea4":{"description":"Ungültiger Anfragetext oder Komponenten gehören nicht zum Lieferprojekt","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["error"],"example":{"error":"Validation failed","message":"The provided data did not pass validation checks"},"properties":{"error":{"type":"string","description":"Fehlermeldung, die beschreibt, was schiefgelaufen ist","isRequired":true,"uniqueKey":"oneOf.0.error","typeLabel":"string"},"message":{"type":"string","description":"Zusätzliche Fehlerdetails oder benutzerfreundliche Nachricht","uniqueKey":"oneOf.0.message","typeLabel":"string"},"success":{"type":"boolean","description":"Zeigt Fehlschlag an, wenn in Fehlerantworten vorhanden","uniqueKey":"oneOf.0.success","typeLabel":"boolean"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["message"],"example":{"error":"Validation failed","message":"The provided data did not pass validation checks"},"properties":{"message":{"type":"string","description":"Zusätzliche Fehlerdetails oder benutzerfreundliche Nachricht","isRequired":true,"uniqueKey":"oneOf.1.message","typeLabel":"string"},"error":{"type":"string","description":"Fehlermeldung, die beschreibt, was schiefgelaufen ist","uniqueKey":"oneOf.1.error","typeLabel":"string"},"success":{"type":"boolean","description":"Zeigt Fehlschlag an, wenn in Fehlerantworten vorhanden","uniqueKey":"oneOf.1.success","typeLabel":"boolean"}},"uniqueKey":"oneOf.1","typeLabel":"object"},{"type":"object","required":["success"],"example":{"error":"Validation failed","message":"The provided data did not pass validation checks"},"properties":{"success":{"type":"boolean","description":"Zeigt Fehlschlag an, wenn in Fehlerantworten vorhanden","isRequired":true,"uniqueKey":"oneOf.2.success","typeLabel":"boolean"},"error":{"type":"string","description":"Fehlermeldung, die beschreibt, was schiefgelaufen ist","uniqueKey":"oneOf.2.error","typeLabel":"string"},"message":{"type":"string","description":"Zusätzliche Fehlerdetails oder benutzerfreundliche Nachricht","uniqueKey":"oneOf.2.message","typeLabel":"string"}},"uniqueKey":"oneOf.2","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Validation failed","message":"The provided data did not pass validation checks"}}},"exampleType":"generated"}},"exampleType":"generated"},"fcfbeff6-b63f-46ad-a4fe-c1968df4b7d9":{"description":"Verboten - Ungültige oder fehlende Berechtigung","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["error"],"example":{"error":"Validation failed","message":"The provided data did not pass validation checks"},"properties":{"error":{"type":"string","description":"Fehlermeldung, die beschreibt, was schiefgelaufen ist","isRequired":true,"uniqueKey":"oneOf.0.error","typeLabel":"string"},"message":{"type":"string","description":"Zusätzliche Fehlerdetails oder benutzerfreundliche Nachricht","uniqueKey":"oneOf.0.message","typeLabel":"string"},"success":{"type":"boolean","description":"Zeigt Fehlschlag an, wenn in Fehlerantworten vorhanden","uniqueKey":"oneOf.0.success","typeLabel":"boolean"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["message"],"example":{"error":"Validation failed","message":"The provided data did not pass validation checks"},"properties":{"message":{"type":"string","description":"Zusätzliche Fehlerdetails oder benutzerfreundliche Nachricht","isRequired":true,"uniqueKey":"oneOf.1.message","typeLabel":"string"},"error":{"type":"string","description":"Fehlermeldung, die beschreibt, was schiefgelaufen ist","uniqueKey":"oneOf.1.error","typeLabel":"string"},"success":{"type":"boolean","description":"Zeigt Fehlschlag an, wenn in Fehlerantworten vorhanden","uniqueKey":"oneOf.1.success","typeLabel":"boolean"}},"uniqueKey":"oneOf.1","typeLabel":"object"},{"type":"object","required":["success"],"example":{"error":"Validation failed","message":"The provided data did not pass validation checks"},"properties":{"success":{"type":"boolean","description":"Zeigt Fehlschlag an, wenn in Fehlerantworten vorhanden","isRequired":true,"uniqueKey":"oneOf.2.success","typeLabel":"boolean"},"error":{"type":"string","description":"Fehlermeldung, die beschreibt, was schiefgelaufen ist","uniqueKey":"oneOf.2.error","typeLabel":"string"},"message":{"type":"string","description":"Zusätzliche Fehlerdetails oder benutzerfreundliche Nachricht","uniqueKey":"oneOf.2.message","typeLabel":"string"}},"uniqueKey":"oneOf.2","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"invalid_scope":{"title":"invalid_scope","value":{"message":"Invalid scope."}},"missing_scope":{"title":"missing_scope","value":{"error":"Unauthorized. Missing scope: projects:write"}},"missing_invoices_scope":{"title":"missing_invoices_scope","value":{"error":"Unauthorized. Missing scope: invoices:write"}},"missing_suppliers_scope":{"title":"missing_suppliers_scope","value":{"error":"Unauthorized. Missing scope: suppliers:write"}}},"exampleType":"examples"}},"exampleType":"examples"},"43131a4f-f74a-445c-b403-ebf4ffd26eb2":{"description":"Lieferung nicht gefunden","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["error"],"example":{"error":"Validation failed","message":"The provided data did not pass validation checks"},"properties":{"error":{"type":"string","description":"Fehlermeldung, die beschreibt, was schiefgelaufen ist","isRequired":true,"uniqueKey":"oneOf.0.error","typeLabel":"string"},"message":{"type":"string","description":"Zusätzliche Fehlerdetails oder benutzerfreundliche Nachricht","uniqueKey":"oneOf.0.message","typeLabel":"string"},"success":{"type":"boolean","description":"Zeigt Fehlschlag an, wenn in Fehlerantworten vorhanden","uniqueKey":"oneOf.0.success","typeLabel":"boolean"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["message"],"example":{"error":"Validation failed","message":"The provided data did not pass validation checks"},"properties":{"message":{"type":"string","description":"Zusätzliche Fehlerdetails oder benutzerfreundliche Nachricht","isRequired":true,"uniqueKey":"oneOf.1.message","typeLabel":"string"},"error":{"type":"string","description":"Fehlermeldung, die beschreibt, was schiefgelaufen ist","uniqueKey":"oneOf.1.error","typeLabel":"string"},"success":{"type":"boolean","description":"Zeigt Fehlschlag an, wenn in Fehlerantworten vorhanden","uniqueKey":"oneOf.1.success","typeLabel":"boolean"}},"uniqueKey":"oneOf.1","typeLabel":"object"},{"type":"object","required":["success"],"example":{"error":"Validation failed","message":"The provided data did not pass validation checks"},"properties":{"success":{"type":"boolean","description":"Zeigt Fehlschlag an, wenn in Fehlerantworten vorhanden","isRequired":true,"uniqueKey":"oneOf.2.success","typeLabel":"boolean"},"error":{"type":"string","description":"Fehlermeldung, die beschreibt, was schiefgelaufen ist","uniqueKey":"oneOf.2.error","typeLabel":"string"},"message":{"type":"string","description":"Zusätzliche Fehlerdetails oder benutzerfreundliche Nachricht","uniqueKey":"oneOf.2.message","typeLabel":"string"}},"uniqueKey":"oneOf.2","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Validation failed","message":"The provided data did not pass validation checks"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"4223083c-9713-4746-8a22-504f5fabd771":{"ApiKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API-Schlüssel zur Authentifizierung. Kontaktieren Sie Ihren Customer Success Manager, um einen API-Schlüssel zu erhalten.\n\nJeder Endpunkt erfordert spezifische Berechtigungen (Scopes); die erforderlichen Scopes werden pro Endpunkt angezeigt.\n","scopes":["deliveries:patch"],"schemeName":"ApiKey"}}},"servers":{"27bdc885-654c-42d2-b8de-7d04f298bbbd":{"url":"https://api.comstruct.com/v1","description":"Haupt-API-Endpunkte (erfordert API-Schlüssel-Authentifizierung)","variables":{}},"91c701c1-ebe7-4fa2-b078-ea277e03dd21":{"url":"https://api.comstruct.com","description":"Basisserver für Kalender- und IDS-Endpunkte (andere Authentifizierung)","variables":{}}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API-Schlüssel zur Authentifizierung. Kontaktieren Sie Ihren Customer Success Manager, um einen API-Schlüssel zu erhalten.\n\nJeder Endpunkt erfordert spezifische Berechtigungen (Scopes); die erforderlichen Scopes werden pro Endpunkt angezeigt.\n","scopes":["deliveries:patch"],"schemeName":"ApiKey"},"schema":{"title":"X-API-Key","type":"string","description":"API-Schlüssel zur Authentifizierung. Kontaktieren Sie Ihren Customer Success Manager, um einen API-Schlüssel zu erhalten.\n\nJeder Endpunkt erfordert spezifische Berechtigungen (Scopes); die erforderlichen Scopes werden pro Endpunkt angezeigt.\n","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKey","name":"X-API-Key"}],"title":"ApiKey"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"comstruct","siteName":"comstruct API Dokumentation","title":"Replace delivery components - comstruct API Dokumentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"de":{"href":"/api-reference/deliveries-components-put","matchLevel":1},"en":{"href":"/en/api-reference/deliveries-components-put","matchLevel":0}}},"lastModified":"2026-05-04T04:24:31.183Z","originalFileLocation":"en/api-reference/deliveries-components-put.mdx","locale":"en"},"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=\"Erforderliche Berechtigungen: deliveries:patch Ersetzt alle Komponentenzuordnungen der Lieferung durch die übergebenen Gruppen. Alle component_ids müssen zum Projekt der Lieferung gehören; innerhalb einer Gruppe müssen sie eindeutig sein. Verteilungswerte müssen endliche, nicht negative Zahlen sein. Gruppen, deren distribution leer ist oder nur Nullen enthält, werden ignoriert (wie in der Web-App). Mit einem leeren Array groups werden alle Zuordnungen entfernt.\">\u003cmeta data-mint-head name=\"application-name\" content=\"comstruct API Dokumentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/comstruct/fBUgIQk4CV_VpIlc/_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/comstruct/fBUgIQk4CV_VpIlc/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/comstruct/fBUgIQk4CV_VpIlc/_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/comstruct/fBUgIQk4CV_VpIlc/_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/comstruct/fBUgIQk4CV_VpIlc/_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/comstruct/fBUgIQk4CV_VpIlc/_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/comstruct/fBUgIQk4CV_VpIlc/_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/comstruct/fBUgIQk4CV_VpIlc/_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/comstruct/fBUgIQk4CV_VpIlc/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Replace delivery components - comstruct API Dokumentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Erforderliche Berechtigungen: deliveries:patch Ersetzt alle Komponentenzuordnungen der Lieferung durch die übergebenen Gruppen. Alle component_ids müssen zum Projekt der Lieferung gehören; innerhalb einer Gruppe müssen sie eindeutig sein. Verteilungswerte müssen endliche, nicht negative Zahlen sein. Gruppen, deren distribution leer ist oder nur Nullen enthält, werden ignoriert (wie in der Web-App). Mit einem leeren Array groups werden alle Zuordnungen entfernt.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"comstruct API Dokumentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.comstruct.com/en/api-reference/deliveries-components-put\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://comstruct.mintlify.site/_mintlify/api/og/v2?division=Deliveries\u0026amp;title=Replace+delivery+components\u0026amp;description=**Erforderliche+Berechtigungen%3A**+%60deliveries%3Apatch%60%0A%0AErsetzt+alle+Komponentenzuordnungen+der+Lieferung+durch+die+%C3%BCbergebenen+Gruppen.%0AAlle+%60component_ids%60+m%C3%BCss\u0026amp;theme=d33cf08ebb99773992a781ff\u0026amp;signature=52506725a66a559cd0c5af5e05d22fe65c52ced61c1e8902f995653dc53ff27f\">\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=\"Replace delivery components - comstruct API Dokumentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Erforderliche Berechtigungen: deliveries:patch Ersetzt alle Komponentenzuordnungen der Lieferung durch die übergebenen Gruppen. Alle component_ids müssen zum Projekt der Lieferung gehören; innerhalb einer Gruppe müssen sie eindeutig sein. Verteilungswerte müssen endliche, nicht negative Zahlen sein. Gruppen, deren distribution leer ist oder nur Nullen enthält, werden ignoriert (wie in der Web-App). Mit einem leeren Array groups werden alle Zuordnungen entfernt.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://comstruct.mintlify.site/_mintlify/api/og/v2?division=Deliveries\u0026amp;title=Replace+delivery+components\u0026amp;description=**Erforderliche+Berechtigungen%3A**+%60deliveries%3Apatch%60%0A%0AErsetzt+alle+Komponentenzuordnungen+der+Lieferung+durch+die+%C3%BCbergebenen+Gruppen.%0AAlle+%60component_ids%60+m%C3%BCss\u0026amp;theme=d33cf08ebb99773992a781ff\u0026amp;signature=52506725a66a559cd0c5af5e05d22fe65c52ced61c1e8902f995653dc53ff27f\">\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/comstruct/fBUgIQk4CV_VpIlc/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"comstruct API Dokumentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2F6879\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.comstruct.com/en/api-reference/deliveries-components-put\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/en/api-reference/deliveries-components-put.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://developer.comstruct.com/en/api-reference/deliveries-components-put\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"de\" href=\"https://developer.comstruct.com/api-reference/deliveries-components-put\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://developer.comstruct.com/api-reference/deliveries-components-put\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.comstruct.com/#organization\",\"name\":\"comstruct API Dokumentation\",\"url\":\"https://developer.comstruct.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/comstruct/Jpsyju8lznqRSEZJ/logo/light.svg?fit=max\u0026auto=format\u0026n=Jpsyju8lznqRSEZJ\u0026q=85\u0026s=acbbee3c044994a3e7752740782d923f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.comstruct.com#website\",\"name\":\"comstruct API Dokumentation\",\"url\":\"https://developer.comstruct.com\",\"publisher\":{\"@id\":\"https://developer.comstruct.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.comstruct.com/en/api-reference/deliveries-components-put#webpage\",\"url\":\"https://developer.comstruct.com/en/api-reference/deliveries-components-put\",\"name\":\"Replace delivery components\",\"description\":\"Erforderliche Berechtigungen: deliveries:patch Ersetzt alle Komponentenzuordnungen der Lieferung durch die übergebenen Gruppen. Alle component_ids müssen zum Projekt der Lieferung gehören; innerhalb einer Gruppe müssen sie eindeutig sein. Verteilungswerte müssen endliche, nicht negative Zahlen sein. Gruppen, deren distribution leer ist oder nur Nullen enthält, werden ignoriert (wie in der Web-App). Mit einem leeren Array groups werden alle Zuordnungen entfernt.\",\"dateModified\":\"2026-05-04T04:24:31.183Z\",\"isPartOf\":{\"@id\":\"https://developer.comstruct.com#website\"},\"breadcrumb\":{\"@id\":\"https://developer.comstruct.com/en/api-reference/deliveries-components-put#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.comstruct.com/en/api-reference/deliveries-components-put#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Deliveries\",\"item\":\"https://developer.comstruct.com/en/api-reference/deliveries\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Replace delivery components\",\"item\":\"https://developer.comstruct.com/en/api-reference/deliveries-components-put\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.comstruct.com/en/api-reference/deliveries-components-put#apireference\",\"headline\":\"Replace delivery components\",\"name\":\"Replace delivery components\",\"description\":\"Erforderliche Berechtigungen: deliveries:patch Ersetzt alle Komponentenzuordnungen der Lieferung durch die übergebenen Gruppen. Alle component_ids müssen zum Projekt der Lieferung gehören; innerhalb einer Gruppe müssen sie eindeutig sein. Verteilungswerte müssen endliche, nicht negative Zahlen sein. Gruppen, deren distribution leer ist oder nur Nullen enthält, werden ignoriert (wie in der Web-App). Mit einem leeren Array groups werden alle Zuordnungen entfernt.\",\"url\":\"https://developer.comstruct.com/en/api-reference/deliveries-components-put\",\"mainEntityOfPage\":{\"@id\":\"https://developer.comstruct.com/en/api-reference/deliveries-components-put#webpage\"},\"dateModified\":\"2026-05-04T04:24:31.183Z\",\"publisher\":{\"@id\":\"https://developer.comstruct.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.comstruct.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"comstruct API Dokumentation\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"comstruct API Dokumentation\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/en/api-reference/deliveries-components-put.md","siteName":"comstruct API Dokumentation","nav":{"global":{"anchors":[{"anchor":"Support","icon":"envelope","href":"mailto:support@comstruct.com"}]},"languages":[{"language":"de","default":true,"pages":[{"title":"de","href":"/api-reference/deliveries-components-put"}]},{"language":"en","tabs":[{"tab":"Getting started","pages":[{"title":"Getting started","href":"/en"}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"API Reference","href":"/en/api-reference/introduction"}]},{"group":"Projects","pages":[{"title":"List projects","openapi":"GET /projects","href":"/en/api-reference/projects"},{"title":"Create project","openapi":"POST /projects","href":"/en/api-reference/projects-create"},{"title":"Assign users","openapi":"POST /projects/user-assignments","href":"/en/api-reference/projects-user-assignments"},{"title":"Get project by external ID","openapi":"GET /projects/byExternalId/{external_id}","href":"/en/api-reference/projects-by-external-id"},{"title":"Get project by number","openapi":"GET /projects/byProjectNumber/{project_number}","href":"/en/api-reference/projects-by-number"},{"title":"Get project components","openapi":"GET /projects/{id}/components","href":"/en/api-reference/projects-components"},{"title":"List project work types","openapi":"GET /projects/{id}/work-types","href":"/en/api-reference/projects-work-types"},{"title":"Import project work types","openapi":"POST /projects/{id}/work-types","href":"/en/api-reference/projects-work-types-upsert"},{"title":"Projects (SAP)","openapi":"POST /projects/sap","href":"/en/api-reference/projects-sap"}]},{"group":"Deliveries","pages":[{"title":"List deliveries","openapi":"GET /deliveries","href":"/en/api-reference/deliveries"},{"title":"Create delivery","openapi":"POST /deliveries","href":"/en/api-reference/deliveries-create"},{"title":"Update delivery","openapi":"PATCH /deliveries/{id}","href":"/en/api-reference/deliveries-patch"},{"title":"Get delivery by ID","openapi":"GET /deliveries/{id}","href":"/en/api-reference/deliveries-by-id"},{"title":"Get delivery components","openapi":"GET /deliveries/{id}/components","description":"**Erforderliche Berechtigungen:** `deliveries:read`\n\nGibt die einer Lieferung zugeordneten Projektkomponenten zurück, gruppiert nach `group_id`.\nJede Gruppe enthält eine gemeinsame Mengenverteilung auf die Positionsbezeichnungen der Lieferung\nsowie die zugehörigen Komponenten (typischerweise eine pro Komponententyp).\n","href":"/en/api-reference/deliveries-components-get"},{"title":"Replace delivery components","openapi":"PUT /deliveries/{id}/components","href":"/en/api-reference/deliveries-components-put"},{"title":"Get delivery PDF","openapi":"GET /deliveries/{id}/pdf","description":"**Erforderliche Berechtigungen:** `deliveries:read`\n\nGibt die PDF-Bytes für einen Lieferschein zurück. Die Antwort ist application/pdf.\n","href":"/en/api-reference/deliveries-pdf"},{"title":"Upload delivery PDF","openapi":"POST /deliveries/pdf","href":"/en/api-reference/deliveries-pdf-upload"},{"title":"OpenTrans delivery","openapi":"POST /deliveries/opentrans","href":"/en/api-reference/deliveries-opentrans"},{"title":"PAHM delivery","openapi":"POST /deliveries/pahm","href":"/en/api-reference/deliveries-pahm"},{"title":"Custom delivery","openapi":"POST /deliveries/custom","href":"/en/api-reference/deliveries-custom"}]},{"group":"Invoices","pages":[{"title":"List invoices","openapi":"GET /invoices","href":"/en/api-reference/invoices"},{"title":"Get invoice by ID","openapi":"GET /invoices/{id}","href":"/en/api-reference/invoices-by-id"},{"title":"Get invoice items","openapi":"GET /invoices/{id}/items","href":"/en/api-reference/invoices-items"},{"title":"Get invoice history","openapi":"GET /invoices/{id}/history","href":"/en/api-reference/invoices-history"},{"title":"Get invoice PDF","openapi":"GET /invoices/{id}/pdf","href":"/en/api-reference/invoices-pdf"},{"title":"Export DATEV XML","openapi":"POST /invoices/public/datev-export","href":"/en/api-reference/invoices-datev-export"},{"title":"Set invoice external status","openapi":"PATCH /invoices/{id}/external-status","href":"/en/api-reference/invoices-external-status"},{"title":"Custom invoice upload","openapi":"POST /invoices/custom","href":"/en/api-reference/invoices-custom"},{"title":"Invoice callback","openapi":"POST /invoices/callback","href":"/en/api-reference/invoices-callback"}]},{"group":"Invoice dimensions","pages":[{"title":"Invoice dimensions (custom properties)","openapi":"GET /invoice-dimensions","href":"/en/api-reference/invoice-dimensions"},{"title":"Create invoice dimension","openapi":"POST /invoice-dimensions","href":"/en/api-reference/invoice-dimensions-create"},{"title":"Update invoice dimension","openapi":"PATCH /invoice-dimensions/{id}","href":"/en/api-reference/invoice-dimensions-update"},{"title":"Delete invoice dimension","openapi":"DELETE /invoice-dimensions/{id}","href":"/en/api-reference/invoice-dimensions-delete"},{"title":"Get dimension options","openapi":"GET /invoice-dimensions/{dimensionId}/options","href":"/en/api-reference/invoice-dimensions-options-list"},{"title":"Create dimension options","openapi":"POST /invoice-dimensions/{dimensionId}/options","href":"/en/api-reference/invoice-dimensions-options-create"},{"title":"Update dimension option","openapi":"PATCH /invoice-dimensions/options/{id}","href":"/en/api-reference/invoice-dimensions-options-update"},{"title":"Delete dimension option","openapi":"DELETE /invoice-dimensions/options/{id}","href":"/en/api-reference/invoice-dimensions-options-delete"},{"title":"Get invoice dimension assignments","openapi":"GET /invoice-dimensions/assignments/invoice/{invoiceId}","href":"/en/api-reference/invoice-dimensions-assignments-invoice-get"},{"title":"Set header dimension assignments","openapi":"POST /invoice-dimensions/assignments/invoice","href":"/en/api-reference/invoice-dimensions-assignments-invoice-set"},{"title":"Set line-item dimension assignments (bulk)","openapi":"POST /invoice-dimensions/assignments/line-item/bulk","href":"/en/api-reference/invoice-dimensions-assignments-line-item-bulk"},{"title":"Set account dimension assignments (bulk)","openapi":"POST /invoice-dimensions/assignments/account/bulk","href":"/en/api-reference/invoice-dimensions-assignments-account-bulk-set"},{"title":"Patch account dimension assignments (bulk)","openapi":"PATCH /invoice-dimensions/assignments/account/bulk","href":"/en/api-reference/invoice-dimensions-assignments-account-bulk-patch"},{"title":"Set account dimension assignments (single account)","openapi":"POST /invoice-dimensions/assignments/account","href":"/en/api-reference/invoice-dimensions-assignments-account-set"},{"title":"Delete dimension assignment","openapi":"DELETE /invoice-dimensions/assignments/{id}","href":"/en/api-reference/invoice-dimensions-assignments-delete"}]},{"group":"Suppliers","pages":[{"title":"Create or update suppliers","openapi":"POST /suppliers","href":"/en/api-reference/suppliers"},{"title":"Create or update SAP suppliers","openapi":"POST /suppliers/sap","href":"/en/api-reference/suppliers-sap"},{"title":"Assign supplier to company codes","openapi":"PUT /suppliers/{id}/legal-entities","href":"/en/api-reference/suppliers-legal-entities"}]},{"group":"Purchase orders","pages":[{"title":"List purchase orders","openapi":"GET /purchase-orders","href":"/en/api-reference/purchase-orders-list"},{"title":"Create purchase orders","openapi":"POST /purchase-orders","href":"/en/api-reference/purchase-orders"},{"title":"Purchase orders (SAP)","openapi":"POST /purchase-orders/sap","href":"/en/api-reference/purchase-orders-sap"}]},{"group":"Orders (Supplier)","pages":[{"title":"Update supplier order","openapi":"PATCH /supplier-orders/{id}","href":"/en/api-reference/supplier-orders-patch"}]},{"group":"Master data","pages":[{"title":"List accounts","openapi":"GET /accounts","href":"/en/api-reference/accounts"},{"title":"Create or update accounts","openapi":"POST /accounts","href":"/en/api-reference/accounts-create"},{"title":"List payment terms","openapi":"GET /payment-terms","href":"/en/api-reference/payment-terms"},{"title":"Create or update payment terms","openapi":"POST /payment-terms","href":"/en/api-reference/payment-terms-upsert"},{"title":"List tax codes","openapi":"GET /tax-codes","href":"/en/api-reference/tax-codes"},{"title":"Create or update tax code","openapi":"POST /tax-codes","href":"/en/api-reference/tax-codes-upsert"},{"title":"List company codes","openapi":"GET /legal-entities","href":"/en/api-reference/company-codes"},{"title":"Create or update company codes","openapi":"POST /legal-entities","href":"/en/api-reference/company-codes-upsert"},{"title":"List project regions","openapi":"GET /project-regions","href":"/en/api-reference/project-regions"},{"title":"Create or update project region","openapi":"POST /project-regions","href":"/en/api-reference/project-regions-upsert"}]},{"group":"Q-Point Integration","pages":[{"title":"Q-Point","openapi":"POST /qpoint","href":"/en/api-reference/qpoint"},{"title":"Q-Point PDF","openapi":"POST /qpoint/pdf","href":"/en/api-reference/qpoint-pdf"}]},{"group":"Workflows","pages":[{"title":"Trigger workflow","openapi":"POST /workflows/trigger","href":"/en/api-reference/workflows-trigger"},{"title":"Workflow status","openapi":"GET /workflows/status/{external_id}","href":"/en/api-reference/workflows-status"},{"title":"Update workflow status","openapi":"PUT /workflows/status/{external_id}","href":"/en/api-reference/workflows-status-update"}]},{"group":"Calendar","pages":[{"title":"Calendar subscription","openapi":"GET /calendars/subscription","href":"/en/api-reference/calendars"}]},{"group":"IDS Orders","pages":[{"title":"IDS orders","openapi":"POST /ids/{order_id}","href":"/en/api-reference/ids-orders"}]}]}]}]},"basePath":"","title":"Replace delivery components - comstruct API Dokumentation","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C9Wu0MeN.js","utils-jWgu-6Qf.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DBD8f9qn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BGuX1ui5.js","snippetPresets-Evy63nQB.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BQHO1lnV.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-B6C8m-t_.js","shallow-BG4cT0fH.js","getApiPlaygroundDisplay-CgEPrE-D.js","CodeSnippet-CU8JyZ9N.js","CodeSnippets-BnxHU32T.js","Page-D6S0Yh6q.js","getPastedJson-CwiYOonh.js","icon-DYDpWmDf.js","MethodPill-C-J-l7_c.js","DuplicateIcon-B6ARwg9w.js","createIcon-Dsv4MtDq.js","DynamicMarkdown-CtasenyM.js","SectionHeading-YNcgYwjB.js","axios-vUo_bRtp.js","Markdown-CwLx6PAg.js","clsx-C3kuh_dz.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CmKHfscc.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-U3mI6Ljh.js"]}