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.
Ersetzt alle Komponentenzuordnungen der Lieferung durch den übergebenen Satz von Gruppen. Das entspricht dem Speichern der Komponentenübersicht in der Web-App: jede Gruppe bündelt mehrere Projektkomponenten (üblicherweise eine pro Komponententyp), die dieselbe Mengenverteilung auf die Lieferpositionen teilen.
{"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":"api-reference/deliveries-components-put","slug":"/api-reference/deliveries-components-put","pageMetadata":{"title":"Lieferkomponenten ersetzen","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":"/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:`übersicht`,children:`Übersicht`}),`\n`,_jsxs(_components.p,{children:[`Ersetzt `,_jsx(_components.strong,{children:`alle`}),` Komponentenzuordnungen der Lieferung durch den übergebenen Satz von Gruppen. Das entspricht dem Speichern der Komponentenübersicht in der Web-App: jede Gruppe bündelt mehrere Projektkomponenten (üblicherweise eine pro Komponententyp), die dieselbe Mengenverteilung auf die Lieferpositionen teilen.`]}),`\n`,_jsx(Heading,{level:`2`,id:`berechtigungen`,children:`Berechtigungen`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Scope`}),_jsx(_components.th,{children:`Tenant-Typ`})]})}),_jsx(_components.tbody,{children:_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`deliveries:patch`})}),_jsxs(_components.td,{children:[`Nur Kunden (`,_jsx(_components.code,{children:`CUSTOMER_ONLY`}),`)`]})]})})]}),`\n`,_jsx(_components.p,{children:`Der API-Schlüssel muss mit einem Kunden verknüpft sein. Lieferanten-API-Schlüssel können diesen Endpunkt nicht verwenden.`}),`\n`,_jsx(Heading,{level:`2`,id:`anfragetext`,children:`Anfragetext`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Feld`}),_jsx(_components.th,{children:`Typ`}),_jsx(_components.th,{children:`Beschreibung`})]})}),_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:[`Liste der Gruppen; `,_jsx(_components.code,{children:`[]`}),` entfernt alle Zuordnungen`]})]})})]}),`\n`,_jsxs(Heading,{level:`3`,id:`pro-gruppe-groups`,children:[`Pro Gruppe (`,_jsx(_components.code,{children:`groups[]`}),`)`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Feld`}),_jsx(_components.th,{children:`Typ`}),_jsx(_components.th,{children:`Beschreibung`})]})}),_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:`IDs der Projektkomponenten; mindestens ein Eintrag, innerhalb der Gruppe eindeutig`})]}),_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 von Positionsbezeichnung (`,_jsx(_components.code,{children:`title`}),` der Lieferposition) auf nicht negative endliche Menge`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`validierung-und-verhalten`,children:`Validierung und Verhalten`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Alle `,_jsx(_components.code,{children:`component_ids`}),` müssen zum `,_jsx(_components.strong,{children:`Projekt der Lieferung`}),` gehören.`]}),`\n`,_jsxs(_components.li,{children:[`Verteilungswerte müssen `,_jsx(_components.strong,{children:`endliche, nicht negative`}),` Zahlen sein.`]}),`\n`,_jsxs(_components.li,{children:[`Gruppen mit leerer `,_jsx(_components.code,{children:`distribution`}),` oder nur Nullwerten werden `,_jsx(_components.strong,{children:`ignoriert`}),` (wie in der Web-App).`]}),`\n`,_jsxs(_components.li,{children:[`Die Antwort hat dieselbe Form wie `,_jsx(_components.strong,{children:`GET`}),` `,_jsx(_components.code,{children:`/deliveries/{id}/components`}),` (inkl. serverseitig vergebener `,_jsx(_components.code,{children:`group_id`}),` und angereicherter Komponentenmetadaten).`]}),`\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:`Beschreibung`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`200`})}),_jsx(_components.td,{children:`Komponenten erfolgreich gesetzt; Body wie GET`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:`Ungültiger Body oder Komponenten passen nicht zum Projekt`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`403`})}),_jsx(_components.td,{children:`Keine Berechtigung — Lieferung gehört einem anderen Kunden`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`404`})}),_jsx(_components.td,{children:`Lieferung nicht gefunden`})]})]})]})]})}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":"Lieferkomponenten ersetzen","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":"/api-reference/deliveries-components-put"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Übersicht","slug":"übersicht","depth":2,"children":[]},{"title":"Berechtigungen","slug":"berechtigungen","depth":2,"children":[]},{"title":"Anfragetext","slug":"anfragetext","depth":2,"children":[{"title":"Pro Gruppe (groups[])","slug":"pro-gruppe-groups","depth":3,"children":[]}]},{"title":"Validierung und Verhalten","slug":"validierung-und-verhalten","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":"Lieferkomponenten ersetzen - comstruct API Dokumentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"de":{"href":"/api-reference/deliveries-components-put","matchLevel":0},"en":{"href":"/en/api-reference/deliveries-components-put","matchLevel":1}}},"lastModified":"2026-05-04T04:24:30.170Z","originalFileLocation":"api-reference/deliveries-components-put.mdx","locale":"de"},"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=\"Lieferkomponenten ersetzen - 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/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=Lieferungen\u0026amp;title=Lieferkomponenten+ersetzen\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=23128d05872d4b392e5d619ec22262b29f85ac6a9f5dc7cbf578c79a64a9b5f3\">\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=\"Lieferkomponenten ersetzen - 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=Lieferungen\u0026amp;title=Lieferkomponenten+ersetzen\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=23128d05872d4b392e5d619ec22262b29f85ac6a9f5dc7cbf578c79a64a9b5f3\">\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/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=\"/api-reference/deliveries-components-put.md\">\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=\"en\" href=\"https://developer.comstruct.com/en/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/api-reference/deliveries-components-put#webpage\",\"url\":\"https://developer.comstruct.com/api-reference/deliveries-components-put\",\"name\":\"Lieferkomponenten ersetzen\",\"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:30.170Z\",\"isPartOf\":{\"@id\":\"https://developer.comstruct.com#website\"},\"breadcrumb\":{\"@id\":\"https://developer.comstruct.com/api-reference/deliveries-components-put#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.comstruct.com/api-reference/deliveries-components-put#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Lieferungen\",\"item\":\"https://developer.comstruct.com/api-reference/deliveries\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lieferkomponenten ersetzen\",\"item\":\"https://developer.comstruct.com/api-reference/deliveries-components-put\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.comstruct.com/api-reference/deliveries-components-put#apireference\",\"headline\":\"Lieferkomponenten ersetzen\",\"name\":\"Lieferkomponenten ersetzen\",\"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/api-reference/deliveries-components-put\",\"mainEntityOfPage\":{\"@id\":\"https://developer.comstruct.com/api-reference/deliveries-components-put#webpage\"},\"dateModified\":\"2026-05-04T04:24:30.170Z\",\"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":"/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,"tabs":[{"tab":"Erste Schritte","pages":[{"title":"Erste Schritte","href":""}]},{"tab":"API-Referenz","groups":[{"group":"Übersicht","pages":[{"title":"API-Referenz","href":"/api-reference/introduction"}]},{"group":"Projekte","pages":[{"title":"Projekte auflisten","openapi":"GET /projects","href":"/api-reference/projects"},{"title":"Projekt erstellen oder aktualisieren","openapi":"POST /projects","href":"/api-reference/projects-create"},{"title":"Benutzer zuweisen","openapi":"POST /projects/user-assignments","href":"/api-reference/projects-user-assignments"},{"title":"Projekt nach externer ID abrufen","openapi":"GET /projects/byExternalId/{external_id}","href":"/api-reference/projects-by-external-id"},{"title":"Projekt nach Projektnummer abrufen","openapi":"GET /projects/byProjectNumber/{project_number}","href":"/api-reference/projects-by-number"},{"title":"Projektkomponenten abrufen","openapi":"GET /projects/{id}/components","href":"/api-reference/projects-components"},{"title":"Kategorien abrufen","openapi":"GET /projects/{id}/work-types","href":"/api-reference/projects-work-types"},{"title":"Kategorien importieren","openapi":"POST /projects/{id}/work-types","href":"/api-reference/projects-work-types-upsert"},{"title":"SAP-Projekte erstellen","openapi":"POST /projects/sap","href":"/api-reference/projects-sap"}]},{"group":"Lieferungen","pages":[{"title":"Lieferungen auflisten","openapi":"GET /deliveries","href":"/api-reference/deliveries"},{"title":"Lieferung erstellen","openapi":"POST /deliveries","href":"/api-reference/deliveries-create"},{"title":"Lieferung aktualisieren","openapi":"PATCH /deliveries/{id}","href":"/api-reference/deliveries-patch"},{"title":"Lieferung nach ID abrufen","openapi":"GET /deliveries/{id}","href":"/api-reference/deliveries-by-id"},{"title":"Lieferkomponenten abrufen","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":"/api-reference/deliveries-components-get"},{"title":"Lieferkomponenten ersetzen","openapi":"PUT /deliveries/{id}/components","href":"/api-reference/deliveries-components-put"},{"title":"Lieferschein-PDF abrufen","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":"/api-reference/deliveries-pdf"},{"title":"Lieferschein-PDF hochladen","openapi":"POST /deliveries/pdf","href":"/api-reference/deliveries-pdf-upload"},{"title":"OpenTrans-Lieferung erstellen","openapi":"POST /deliveries/opentrans","href":"/api-reference/deliveries-opentrans"},{"title":"PAHM-Lieferung erstellen","openapi":"POST /deliveries/pahm","href":"/api-reference/deliveries-pahm"},{"title":"Eigene Lieferung erstellen","openapi":"POST /deliveries/custom","href":"/api-reference/deliveries-custom"}]},{"group":"Rechnungen","pages":[{"title":"Rechnungen auflisten","openapi":"GET /invoices","href":"/api-reference/invoices"},{"title":"Rechnung abrufen","openapi":"GET /invoices/{id}","href":"/api-reference/invoices-by-id"},{"title":"Rechnungspositionen abrufen","openapi":"GET /invoices/{id}/items","href":"/api-reference/invoices-items"},{"title":"Rechnungsverlauf abrufen","openapi":"GET /invoices/{id}/history","href":"/api-reference/invoices-history"},{"title":"Rechnungs-PDF abrufen","openapi":"GET /invoices/{id}/pdf","href":"/api-reference/invoices-pdf"},{"title":"DATEV-XML-Export abrufen","openapi":"POST /invoices/public/datev-export","href":"/api-reference/invoices-datev-export"},{"title":"Externen Rechnungsstatus setzen","openapi":"PATCH /invoices/{id}/external-status","href":"/api-reference/invoices-external-status"},{"title":"Rechnung verarbeiten (eigenes Format)","openapi":"POST /invoices/custom","href":"/api-reference/invoices-custom"},{"title":"SAP-Rechnungs-Rückmeldung","openapi":"POST /invoices/callback","href":"/api-reference/invoices-callback"}]},{"group":"Rechnungs-Dimensionen","pages":[{"title":"Rechnungs-Dimensionen (Custom Properties)","openapi":"GET /invoice-dimensions","href":"/api-reference/invoice-dimensions"},{"title":"Rechnungs-Dimension anlegen","openapi":"POST /invoice-dimensions","href":"/api-reference/invoice-dimensions-create"},{"title":"Rechnungs-Dimension aktualisieren","openapi":"PATCH /invoice-dimensions/{id}","href":"/api-reference/invoice-dimensions-update"},{"title":"Rechnungs-Dimension löschen","openapi":"DELETE /invoice-dimensions/{id}","href":"/api-reference/invoice-dimensions-delete"},{"title":"Dimension-Optionen abrufen","openapi":"GET /invoice-dimensions/{dimensionId}/options","href":"/api-reference/invoice-dimensions-options-list"},{"title":"Dimension-Optionen anlegen","openapi":"POST /invoice-dimensions/{dimensionId}/options","href":"/api-reference/invoice-dimensions-options-create"},{"title":"Dimension-Option aktualisieren","openapi":"PATCH /invoice-dimensions/options/{id}","href":"/api-reference/invoice-dimensions-options-update"},{"title":"Dimension-Option löschen","openapi":"DELETE /invoice-dimensions/options/{id}","href":"/api-reference/invoice-dimensions-options-delete"},{"title":"Dimensions-Zuweisungen einer Rechnung abrufen","openapi":"GET /invoice-dimensions/assignments/invoice/{invoiceId}","href":"/api-reference/invoice-dimensions-assignments-invoice-get"},{"title":"Header-Dimensions-Zuweisungen setzen","openapi":"POST /invoice-dimensions/assignments/invoice","href":"/api-reference/invoice-dimensions-assignments-invoice-set"},{"title":"Positions-Dimensions-Zuweisungen (Bulk) setzen","openapi":"POST /invoice-dimensions/assignments/line-item/bulk","href":"/api-reference/invoice-dimensions-assignments-line-item-bulk"},{"title":"Konto-Dimensions-Zuweisungen (Bulk) setzen","openapi":"POST /invoice-dimensions/assignments/account/bulk","href":"/api-reference/invoice-dimensions-assignments-account-bulk-set"},{"title":"Konto-Dimensions-Zuweisungen (Bulk) teilweise aktualisieren","openapi":"PATCH /invoice-dimensions/assignments/account/bulk","href":"/api-reference/invoice-dimensions-assignments-account-bulk-patch"},{"title":"Konto-Dimensions-Zuweisungen (ein Konto) setzen","openapi":"POST /invoice-dimensions/assignments/account","href":"/api-reference/invoice-dimensions-assignments-account-set"},{"title":"Dimensions-Zuweisung löschen","openapi":"DELETE /invoice-dimensions/assignments/{id}","href":"/api-reference/invoice-dimensions-assignments-delete"}]},{"group":"Lieferanten","pages":[{"title":"Lieferanten erstellen oder aktualisieren","openapi":"POST /suppliers","href":"/api-reference/suppliers"},{"title":"SAP-Lieferanten erstellen oder aktualisieren","openapi":"POST /suppliers/sap","href":"/api-reference/suppliers-sap"},{"title":"Lieferant Buchungskreisen zuordnen","openapi":"PUT /suppliers/{id}/legal-entities","href":"/api-reference/suppliers-legal-entities"}]},{"group":"Bestellungen","pages":[{"title":"Bestellungen auflisten","openapi":"GET /purchase-orders","href":"/api-reference/purchase-orders-list"},{"title":"Bestellungen erstellen","openapi":"POST /purchase-orders","href":"/api-reference/purchase-orders"},{"title":"SAP-Bestellungen erstellen","openapi":"POST /purchase-orders/sap","href":"/api-reference/purchase-orders-sap"}]},{"group":"Bestellungen (Lieferanten)","pages":[{"title":"Lieferantenbestellung aktualisieren","openapi":"PATCH /supplier-orders/{id}","href":"/api-reference/supplier-orders-patch"}]},{"group":"Stammdaten","pages":[{"title":"Konten auflisten","openapi":"GET /accounts","href":"/api-reference/accounts"},{"title":"Konten erstellen oder aktualisieren","openapi":"POST /accounts","href":"/api-reference/accounts-create"},{"title":"Zahlungsbedingungen auflisten","openapi":"GET /payment-terms","href":"/api-reference/payment-terms"},{"title":"Zahlungsbedingungen erstellen/aktualisieren","openapi":"POST /payment-terms","href":"/api-reference/payment-terms-upsert"},{"title":"Steuercodes auflisten","openapi":"GET /tax-codes","href":"/api-reference/tax-codes"},{"title":"Steuercodes erstellen/aktualisieren","openapi":"POST /tax-codes","href":"/api-reference/tax-codes-upsert"},{"title":"Buchungskreise auflisten","openapi":"GET /legal-entities","href":"/api-reference/company-codes"},{"title":"Buchungskreise erstellen/aktualisieren","openapi":"POST /legal-entities","href":"/api-reference/company-codes-upsert"},{"title":"Projektregionen auflisten","openapi":"GET /project-regions","href":"/api-reference/project-regions"},{"title":"Projektregionen erstellen/aktualisieren","openapi":"POST /project-regions","href":"/api-reference/project-regions-upsert"}]},{"group":"Q-Point Integration","pages":[{"title":"Q-Point-Lieferung erstellen","openapi":"POST /qpoint","href":"/api-reference/qpoint"},{"title":"Q-Point-PDF hochladen","openapi":"POST /qpoint/pdf","href":"/api-reference/qpoint-pdf"}]},{"group":"Workflows","pages":[{"title":"Workflow auslösen","openapi":"POST /workflows/trigger","href":"/api-reference/workflows-trigger"},{"title":"Workflow-Status abrufen","openapi":"GET /workflows/status/{external_id}","href":"/api-reference/workflows-status"},{"title":"Workflow-Status aktualisieren","openapi":"PUT /workflows/status/{external_id}","href":"/api-reference/workflows-status-update"}]},{"group":"Kalender","pages":[{"title":"Kalender-Abonnement","openapi":"GET /calendars/subscription","href":"/api-reference/calendars"}]},{"group":"IDS Aufträge","pages":[{"title":"IDS-Auftrag verarbeiten","openapi":"POST /ids/{order_id}","href":"/api-reference/ids-orders"}]}]}]},{"language":"en","pages":[{"title":"en","href":"/en/api-reference/deliveries-components-put"}]}]},"basePath":"","title":"Lieferkomponenten ersetzen - 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"]}