Per-manufacturer API key in the X-API-Key header, format
emidat-{key_id}-{secret} where key_id is a random public handle.
Issued by an owner in the Emidat
dashboard; carries its own permission scopes, optional plant
restrictions, and optional expiry. A revoked, expired, or unknown key
returns 401. See the Authentication guide for details.
The instance's full set of components. Each (type, ref) pair may
appear at most once — duplicate components are rejected (422).
The order is stable across reads but is not the order you sent:
compare BOMs by (type, ref), not position.
Supplier products with unvalidated material types can be saved in the
BOM, but block LCA calculation. lca-results reports the
unvalidated_material_types reason until the affected components
are replaced with validated materials.
Show child attributes
Response
The instance's BOM after the replace (the components you just wrote).
The instance's full set of components. Each (type, ref) pair may
appear at most once — duplicate components are rejected (422).
The order is stable across reads but is not the order you sent:
compare BOMs by (type, ref), not position.
Supplier products with unvalidated material types can be saved in the
BOM, but block LCA calculation. lca-results reports the
unvalidated_material_types reason until the affected components
are replaced with validated materials.
Show child attributes
⌘I
{"docsConfig":{"theme":"willow","$schema":"https://mintlify.com/docs.json","name":"Emidat API","colors":{"primary":"#2929CC","light":"#7A9EFF","dark":"#3A41FF"},"logo":{"light":"https://mintcdn.com/emidat/KhjEpdL-EUrz1H4P/logo/dark.svg?fit=max\u0026auto=format\u0026n=KhjEpdL-EUrz1H4P\u0026q=85\u0026s=35ce6850a5591a143fb8936475924122","dark":"https://mintcdn.com/emidat/KhjEpdL-EUrz1H4P/logo/light.svg?fit=max\u0026auto=format\u0026n=KhjEpdL-EUrz1H4P\u0026q=85\u0026s=baa6adbdb91f8c15483fb851ef7340f0"},"favicon":"https://mintcdn.com/emidat/YjmcwD6G99MPB3DL/favicon.svg?fit=max\u0026auto=format\u0026n=YjmcwD6G99MPB3DL\u0026q=85\u0026s=a385fe226f3bef5e55f05bc1451a416f","appearance":{"default":"light","strict":true},"fonts":{"heading":{"family":"CircularStd","weight":700,"source":"fonts/CircularStd-Bold.woff2","format":"woff2"},"body":{"family":"CircularStd","weight":400,"source":"fonts/CircularStd-Book.woff2","format":"woff2"}},"icons":{"library":"lucide"},"styling":{"eyebrows":"section","codeblocks":"dark","latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"emidat","hasAudioNarration":false,"actualSubdomain":"emidat","customDomains":["docs.emidat.com"],"gitSource":{"type":"github","owner":"emidat","repo":"emidat-api","deployBranch":"main","contentDirectory":"mintlify","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae1149a59a03b84c66cc0f2","collectionId":"d2e84996-5af7-41f5-b843-621489ca96aa","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae1149a59a03b84c66cc0f2"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae1149a59a03b84c66cc0f2","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"Product Instances","count":9},{"language":"default","tag":"Composites","count":5},{"language":"default","tag":"Prechain Products","count":5},{"language":"default","tag":"Silos","count":5},{"language":"default","tag":"Supplier Companies","count":5},{"language":"default","tag":"Supplier Plants","count":5},{"language":"default","tag":"Supplier Products","count":5},{"language":"default","tag":"Get Started","count":5},{"language":"default","tag":"Plants","count":2},{"language":"default","tag":"Production Processes","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":root{--emidat-surface-primary:#ffffff;--emidat-stroke-primary:#e0e0e0;--emidat-state-hover:rgb(0 0 0 / 4%);--emidat-state-info-active:rgb(58 65 255 / 8%);--emidat-surface-neutral:#f2f0e9;--emidat-content-neutral:#665d56;--emidat-surface-accent:#dcff1d;--emidat-surface-accent-soft:#f7ffc2;--emidat-stroke-accent:#72a300;--emidat-content-accent:#243300;--emidat-surface-info:#d9e8ff;--emidat-content-info:#2929cc;--emidat-surface-warn:#ffeac9;--emidat-content-warn:#b85300;--emidat-surface-alt:#ede0ff;--emidat-content-alt:#601fc2;--emidat-shadow-sm:0 2px 10px 0 rgb(88 107 86 / 8%), 0 1px 2px 0 rgb(88 107 86 / 8%);--emidat-page-width:92rem}#navbar>div:last-child,div:has(>#content-area){max-width:var(--emidat-page-width);margin-inline:auto}@media (min-width:1024px){#sidebar{left:max(0px,calc((100% - var(--emidat-page-width))/2))}}#navbar .nav-logo{height:1.75rem}#background-color{background-color:var(--emidat-surface-primary)}#header,#header *,#table-of-contents,#table-of-contents *{text-align:left}#table-of-contents{align-items:flex-start}#sidebar a:hover{background-color:var(--emidat-state-hover)}#sidebar a[aria-current=page]{background-color:var(--emidat-state-info-active)}@font-face{font-family:\"CircularStd\";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/CircularStd-Medium.woff2) format(\"woff2\")}[class*=rounded]:not([class*=rounded-full]){border-radius:0!important}#content-area :is(h1, h2, h3, h4, h5),#page-title h1{font-weight:700}.accordion,.callout,.card,.field,.frame,.tile{border-color:var(--emidat-stroke-primary);box-shadow:none}.card:hover{box-shadow:var(--emidat-shadow-sm)}#topbar-cta-button,.tryit-button{background-color:var(--emidat-surface-accent);border:1px solid var(--emidat-stroke-accent);color:var(--emidat-content-accent);font-weight:700}.tryit-button .icon{background-color:currentColor}.card-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.card-header-title{display:inline-flex;align-items:center;gap:.5rem;font-weight:700}.badge{flex-shrink:0;padding:.1rem .55rem;font-size:.7rem;font-weight:700;white-space:nowrap}.badge-neutral{background:var(--emidat-surface-neutral);color:var(--emidat-content-neutral)}.badge-accent{background:var(--emidat-surface-accent-soft);color:var(--emidat-content-accent)}.badge-warn{background:var(--emidat-surface-warn);color:var(--emidat-content-warn)}.badge-info{background:var(--emidat-surface-info);color:var(--emidat-content-info)}.badge-alt{background:var(--emidat-surface-alt);color:var(--emidat-content-alt)}.nav-tag-pill-text[data-nav-tag=Preview]{color:var(--emidat-content-warn)!important;background-color:var(--emidat-surface-warn)!important}"}],"page":{"pagePath":"api-reference/product-instances/bom","slug":"/api-reference/product-instances/bom","pageMetadata":{"title":"Replace BOM","openapi":"PUT /v2/product-instances/{id}/bom","tag":"Preview","description":"Replaces the instance's entire BOM. Re-sending the same components is a no-op (idempotent).\n\nRequires `edit:recipes`. Keys issued before that scope existed carry it\nwherever they carry `edit:products`.\n\nEvery component must sit at a plant your key can reach — access to the\ninstance does not extend to what its BOM points at.\n\nA by-product of its production process takes no components\n(`err_product_type_no_recipe`): its main products' recipes cover its share.\n","href":"/api-reference/product-instances/bom"},"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 ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Replaces the instance’s entire BOM. Re-sending the same components is a no-op (idempotent).\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Requires \", _jsx(_components.code, {\n children: \"edit:recipes\"\n }), \". Keys issued before that scope existed carry it\\nwherever they carry \", _jsx(_components.code, {\n children: \"edit:products\"\n }), \".\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Every component must sit at a plant your key can reach — access to the\\ninstance does not extend to what its BOM points at.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A by-product of its production process takes no components\\n(\", _jsx(_components.code, {\n children: \"err_product_type_no_recipe\"\n }), \"): its main products’ recipes cover its share.\"]\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Replace BOM","openapi":"PUT /v2/product-instances/{id}/bom","tag":"Preview","description":"Replaces the instance's entire BOM. Re-sending the same components is a no-op (idempotent).\n\nRequires `edit:recipes`. Keys issued before that scope existed carry it\nwherever they carry `edit:products`.\n\nEvery component must sit at a plant your key can reach — access to the\ninstance does not extend to what its BOM points at.\n\nA by-product of its production process takes no components\n(`err_product_type_no_recipe`): its main products' recipes cover its share.\n","href":"/api-reference/product-instances/bom"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"v2_product_instances_replace_bom","summary":"Replace BOM","description":"Replaces the instance's entire BOM. Re-sending the same components is a no-op (idempotent).\n\nRequires `edit:recipes`. Keys issued before that scope existed carry it\nwherever they carry `edit:products`.\n\nEvery component must sit at a plant your key can reach — access to the\ninstance does not extend to what its BOM points at.\n\nA by-product of its production process takes no components\n(`err_product_type_no_recipe`): its main products' recipes cover its share.\n","tags":["Product Instances"],"parameters":["5c19fec5-beeb-4bfc-b6e1-8aacd9b0de95"],"requestBody":"204c1ed6-51b6-4c79-bba4-41f96db9d95b","responses":{"200":"83e99932-78bd-423f-a339-410822038e48","401":"eb3cade3-bbe9-4355-bcc3-459c7dae73de","403":"5be9f8d5-b329-4d72-85d6-cb028e253602","404":"ac694138-a5d2-420a-92e9-0818d97aecec","422":"d763a92c-b0b3-4265-8763-569cd5c14fd3","500":"fe5713e4-7f2a-45ed-8d90-89fb4e7bd07f"},"method":"put","type":"path","servers":["a42dc66d-03f9-4209-983c-652cfedae855"],"security":["2ab579d0-4684-4603-a7c2-22c2b153e15a"],"path":"/v2/product-instances/{id}/bom","baseUrlOptions":["https://api.emidat.com"],"title":"Replace BOM","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"5c19fec5-beeb-4bfc-b6e1-8aacd9b0de95":{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","isRequired":true,"description":"The instance's Emidat UUID.","uniqueKey":"","typeLabel":"string\u003cuuid>"},"description":"The instance's Emidat UUID."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["bom"],"properties":{"bom":{"type":"array","description":"The instance's full set of components. Each `(type, ref)` pair may\nappear at most once — duplicate components are rejected (`422`).\nThe order is stable across reads but is not the order you sent:\ncompare BOMs by `(type, ref)`, not position.\nSupplier products with unvalidated material types can be saved in the\nBOM, but block LCA calculation. `lca-results` reports the\n`unvalidated_material_types` reason until the affected components\nare replaced with validated materials.\n","items":{"type":"object","required":["type","ref","mass_kg"],"properties":{"type":{"type":"string","enum":["supplier_product","silo","prechain_product"],"description":"What `ref` points at. supplier_product/silo/prechain_product are\nleaves you've registered.\n","isRequired":true,"uniqueKey":"bom.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"ref":{"type":"string","format":"uuid","description":"The referenced entity's Emidat UUID. Resolve your code to a UUID with\n`GET …?external_id=`, or use the UUID returned when you created it.\n`type` says which entity it is.\n","isRequired":true,"uniqueKey":"bom.items.[INDEX].ref","typeLabel":"string\u003cuuid>"},"mass_kg":{"type":"number","exclusiveMinimum":0,"description":"Per-level BOM-entry mass in kg (amount of this child per unit of THIS instance). kg only, greater than 0.","example":0.18,"isRequired":true,"uniqueKey":"bom.items.[INDEX].mass_kg","typeLabel":"number"}},"uniqueKey":"bom.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"bom","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"example":{"bom":[{"type":"supplier_product","ref":"33333333-3333-3333-3333-333333333333","mass_kg":0.18},{"type":"silo","ref":"88888888-8888-8888-8888-888888888888","mass_kg":0.62},{"type":"prechain_product","ref":"99999999-9999-9999-9999-999999999999","mass_kg":0.2}]},"examples":{"Example":{"title":"Example","value":{"bom":[{"type":"supplier_product","ref":"33333333-3333-3333-3333-333333333333","mass_kg":0.18},{"type":"silo","ref":"88888888-8888-8888-8888-888888888888","mass_kg":0.62},{"type":"prechain_product","ref":"99999999-9999-9999-9999-999999999999","mass_kg":0.2}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"83e99932-78bd-423f-a339-410822038e48":{"description":"The instance's BOM after the replace (the components you just wrote).","content":{"application/json":{"schema":{"type":"object","required":["bom"],"properties":{"bom":{"type":"array","description":"The instance's full set of components. Each `(type, ref)` pair may\nappear at most once — duplicate components are rejected (`422`).\nThe order is stable across reads but is not the order you sent:\ncompare BOMs by `(type, ref)`, not position.\nSupplier products with unvalidated material types can be saved in the\nBOM, but block LCA calculation. `lca-results` reports the\n`unvalidated_material_types` reason until the affected components\nare replaced with validated materials.\n","items":{"type":"object","required":["type","ref","mass_kg"],"properties":{"type":{"type":"string","enum":["supplier_product","silo","prechain_product"],"description":"What `ref` points at. supplier_product/silo/prechain_product are\nleaves you've registered.\n","isRequired":true,"uniqueKey":"bom.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"ref":{"type":"string","format":"uuid","description":"The referenced entity's Emidat UUID. Resolve your code to a UUID with\n`GET …?external_id=`, or use the UUID returned when you created it.\n`type` says which entity it is.\n","isRequired":true,"uniqueKey":"bom.items.[INDEX].ref","typeLabel":"string\u003cuuid>"},"mass_kg":{"type":"number","exclusiveMinimum":0,"description":"Per-level BOM-entry mass in kg (amount of this child per unit of THIS instance). kg only, greater than 0.","example":0.18,"isRequired":true,"uniqueKey":"bom.items.[INDEX].mass_kg","typeLabel":"number"}},"uniqueKey":"bom.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"bom","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"bom":[{"type":"supplier_product","ref":"3c90c3cc-0d44-4b50-8888-8dd25736052a","mass_kg":0.18}]}}},"exampleType":"generated"}},"exampleType":"generated"},"eb3cade3-bbe9-4355-bcc3-459c7dae73de":{"description":"No credentials; or the key is malformed, unknown, revoked, or expired. The\nresponse is uniform and does not reveal which check failed.\n","content":{"application/json":{"schema":{"type":"object","required":["msg","err_code"],"properties":{"msg":{"type":"string","description":"Human-readable explanation, for logs and operators. Do not parse it.","example":"supplier product requires a supplier plant","isRequired":true,"uniqueKey":"msg","typeLabel":"string"},"err_code":{"type":"string","description":"Stable, machine-readable error code — branch on this, never on `msg`.\nThe set may grow over time; treat an unrecognized code as\nnon-retryable and surface it to an operator. The enum lists every\ncode the platform can emit; only a subset is reachable per\nendpoint — see [Errors](/errors) for the actionable catalog.\n\n`LcaRecomputeJob.err_code` reports failures from this same `err_*`\nnamespace. `LcaBlocker.err_code` does not — those values are a\nseparate, disjoint set.\n","example":"err_supplier_product_missing_supplier_plant","enum":["err_emigo_daily_limit_reached","err_not_defined","err_not_found","err_not_valid","err_not_authenticated","err_permission_denied","err_account_frozen","err_declaration_not_completed","err_declaration_not_regenerable","err_epd_document_already_exists","err_invalid_product_ids","err_generate_products_limit","err_plant_missing_product_category","err_plant_incomplete_address","err_plant_incomplete_company_fields","err_plant_categories_not_covering_processes","err_plant_categories_not_covering_active_products","err_plant_invalid_category_id","err_plant_invalid_balancing_authority","err_plant_balancing_authority_non_us","err_plant_custom_electricity_mix_not_allowed","err_plant_electricity_mix_mismatch","err_plant_negative_electricity_values","err_plant_electricity_without_mix","err_electricity_plant_production_mismatch","err_lca_mass_balance","err_lca_allocation_data_incomplete","err_lca_production_output_mismatch","err_process_output_below_linked_output","err_product_mass_larger_than_recipe_mass","err_product_category_not_allowed_at_plant","err_water_not_scoped_but_wastewater_is_scoped","err_more_wastewater_than_water","err_project_no_products","err_invalid_product_quantity","err_duplicate_product","err_product_missing_gwp_total","err_elementary_deactivated","err_product_missing_supplier","err_epd_unusable","err_epd_service","err_lca_update_not_queued","err_lca_export_not_ready","err_not_ready_for_epd","err_material_not_hazardous","err_material_no_limited_lifetime","err_invalid_lifetime_years","err_invalid_secondary_percentage_range","err_secondary_percentage_not_customizable","err_moisture_content_not_bio_based","err_invalid_moisture_content_range","err_declaration_not_exists","err_declaration_not_under_review","err_no_manufacturer","err_company_setup_required","err_account_setup_complete","err_wrong_email_domain","err_user_exists","err_inviter_email_not_found","err_composite_used_in_supplier_products","err_composite_name_exists","err_plant_io_invalid_field","err_plant_io_field_not_switchable","err_plant_io_value_not_scoped","err_field_is_plant_level","err_negative_io_value","err_invalid_packaging_material","err_plant_io_mixed_allocation_groups","err_inies_sworn_statement_exists","err_supplier_in_use","err_supplier_name_exists","err_supplier_plant_in_use","err_supplier_plant_name_exists","err_supplier_product_in_recipe","err_supplier_product_in_silo","err_supplier_product_scoped_as_packaging","err_supplier_product_declared_on_a_product","err_supplier_product_missing_supplier_plant","err_silo_in_use","err_silo_name_exists","err_elementary_unknown_matching","err_product_document_not_deletable","err_product_has_declarations","err_product_instance_in_recipe","err_product_instance_has_declarations","err_prechain_product_in_recipe","err_prechain_product_exists","err_prechain_product_not_main_product","err_ccf_exists","err_ccf_not_completed","err_external_id_exists","err_external_owner_invitation_exists","err_external_owner_invitation_not_editable","err_external_owner_invitation_not_withdrawable","err_idempotency_key_reused","err_idempotency_in_progress","err_bulk_upload_invalid_file","err_bulk_upload_duplicate_headers","err_bulk_upload_ambiguous_headers","err_bulk_upload_ambiguous_values","err_bulk_upload_ambiguous_header_language","err_bulk_upload_mixed_header_languages","err_bulk_upload_language_mismatch","err_bulk_upload_value_language_mismatch","err_bulk_upload_obsolete_template","err_bulk_upload_missing_translation","err_material_type_not_found","err_material_type_unvalidated","err_unvalidated_material_type_not_found","err_material_type_not_configured","err_unit_not_allowed_for_material","err_production_process_not_found","err_multiple_production_processes","err_process_plant_mismatch","err_material_process_incompatible","err_process_output_kind_change","err_production_process_required","err_composite_not_allowed_in_recipe","err_elementary_not_allowed_in_recipe","err_elementary_already_allowed_for_product","err_elementary_request_idempotency_conflict","err_prechain_circular_reference","err_product_type_no_recipe","err_product_mass_not_set","err_required_cell_empty","err_plant_not_found","err_plant_no_access","err_multiple_plants","err_product_already_exists","err_multiple_products","err_instance_material_type_mismatch","err_instance_unit_mismatch","err_instance_id_belongs_to_other","err_instance_id_differs_from_stored","err_duplicate_instance_id","err_instance_updated","err_bulk_change","err_bulk_unchanged","err_bulk_skipped_existing","err_instance_years_removed","err_annual_year_outside_stored_period","err_linked_product_type_mismatch","err_tech_spec_not_recognized","err_recipe_incomplete","err_annual_output_invalid","err_annual_economic_value_invalid","err_annual_output_year_required","err_annual_output_year_invalid","err_annual_output_year_duplicate","err_annual_output_year_outside_period","err_orphan_row","err_duplicate_tech_spec","err_empty_sheet","err_no_products","err_tech_spec_invalid_value","err_dtp_service","err_data_translation_wrong_step","err_data_translation_invalid_plant_mapping","err_data_translation_unresolved_reference","err_data_translation_incomplete","err_data_translation_material_not_available","err_data_translation_duplicate_supplier_name","err_recycled_content_proof_missing","err_ppwr_declaration_exists","err_ppwr_declaration_editable_exists","err_ppwr_declaration_frozen","err_ppwr_doc_number_unavailable","err_ppwr_variant_mass_invalid","err_ppwr_variant_dimension_invalid","err_ppwr_variant_material_repeated","err_ppwr_variant_material_type","err_ppwr_invalid_field_key","err_ppwr_supplier_request_not_packaging_manufacturer","err_ppwr_supplier_request_pending","err_ppwr_supplier_request_not_pending","err_ppwr_field_not_requested","err_ppwr_document_limit_reached","err_ppwr_generation_not_packaging_manufacturer","err_ppwr_declaration_incomplete","err_ppwr_invalid_signatory","err_ppwr_invitation_send_failed","err_ppwr_supplier_link_placeholder_missing","err_ppwr_supplier_subject_missing","err_ppwr_supplier_email_missing","err_ppwr_verification_code_limit","err_ppwr_verification_code_send_failed","err_ppwr_email_not_verified","err_ppwr_attestation_required","err_ppwr_document_not_deletable","err_proof_document_limit","err_proof_size_limit","err_supplier_address_country_only","err_supplier_address_ignored","err_supplier_address_not_found","err_transport_distance_unresolved","err_transport_modality_duplicate","err_transport_modality_invalid","err_transport_route_unavailable","err_transport_missing_coordinates","err_transport_no_route","err_transport_same_address","err_transport_route_in_use","err_transport_route_name_exists","err_transport_route_invalid_polyline","err_transport_route_source_ambiguous","err_transport_route_no_materials_selected","err_transport_route_wrong_lane","err_transport_route_missing_source","err_reauthentication_required","err_two_factor_required","err_entitlement_limit_reached","err_program_operator_not_entitled","err_product_category_not_entitled","err_product_category_paused","err_translation_package_required","err_epd_tier_required","err_prechain_category_not_publishable","err_self_upgrade_not_offered","err_self_upgrade_request_required","err_self_upgrade_limit_changed","err_self_upgrade_unavailable","err_self_upgrade_in_progress","err_self_upgrade_already_requested","err_self_upgrade_offer_changed","err_upgrade_approval_not_pending","err_translation_unavailable"],"isRequired":true,"uniqueKey":"err_code","typeLabel":"enum\u003cstring>"},"entitlement_limit":{"oneOf":[{"type":"object","description":"Structured context for `err_entitlement_limit_reached` — which\nlicensed dimension is exhausted and the numbers behind it.\nOmitted on every other error, so check for presence rather than\ncomparing against `null`.\n","required":["dimension","usage","limit"],"properties":{"dimension":{"type":"string","description":"The set may grow as more dimensions become enforced — treat an\nunrecognized value like the generic limit error.\n","enum":["users","plants","product_instances","published_epds"],"isRequired":true,"uniqueKey":"entitlement_limit.oneOf.0.dimension","typeLabel":"enum\u003cstring>"},"usage":{"type":"integer","description":"What the account currently uses in this dimension.","isRequired":true,"uniqueKey":"entitlement_limit.oneOf.0.usage","typeLabel":"integer"},"limit":{"type":"integer","description":"What the license allows.","isRequired":true,"uniqueKey":"entitlement_limit.oneOf.0.limit","typeLabel":"integer"}},"uniqueKey":"entitlement_limit.oneOf.0","typeLabel":"object"},{"type":"null","description":"Structured context for `err_entitlement_limit_reached` — which\nlicensed dimension is exhausted and the numbers behind it.\nOmitted on every other error, so check for presence rather than\ncomparing against `null`.\n","uniqueKey":"entitlement_limit.oneOf.1","typeLabel":"null"}],"uniqueKey":"entitlement_limit","typeLabel":"object | null"},"product_categories":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"product_categories.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"For `err_product_category_not_entitled` and\n`err_product_category_paused`: the names of the product\ncategories the license doesn't include, so a client can show\nthem. Omitted on every other error, so check for presence rather\nthan comparing against `null`.\n","uniqueKey":"product_categories.oneOf.0","typeLabel":"string[]"},{"type":"null","description":"For `err_product_category_not_entitled` and\n`err_product_category_paused`: the names of the product\ncategories the license doesn't include, so a client can show\nthem. Omitted on every other error, so check for presence rather\nthan comparing against `null`.\n","uniqueKey":"product_categories.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_categories","typeLabel":"string[] | null"},"epd_category":{"oneOf":[{"type":"integer","description":"For `err_epd_tier_required`: the pricing category (1-3) the EPD\nbelongs to, which has no EPD tier booked. Omitted on every other\nerror, so check for presence rather than comparing against `null`.\n","uniqueKey":"epd_category.oneOf.0","typeLabel":"integer"},{"type":"null","description":"For `err_epd_tier_required`: the pricing category (1-3) the EPD\nbelongs to, which has no EPD tier booked. Omitted on every other\nerror, so check for presence rather than comparing against `null`.\n","uniqueKey":"epd_category.oneOf.1","typeLabel":"null"}],"uniqueKey":"epd_category","typeLabel":"integer | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"msg":"supplier product requires a supplier plant","err_code":"err_supplier_product_missing_supplier_plant","entitlement_limit":{"dimension":"users","usage":123,"limit":123},"product_categories":["\u003cstring>"],"epd_category":123}}},"exampleType":"generated"}},"exampleType":"generated"},"5be9f8d5-b329-4d72-85d6-cb028e253602":{"description":"A valid key lacked the required permission, or targeted a resource outside\nits access.\n","content":{"application/json":{"schema":{"type":"object","required":["msg","err_code"],"properties":{"msg":{"type":"string","description":"Human-readable explanation, for logs and operators. Do not parse it.","example":"supplier product requires a supplier plant","isRequired":true,"uniqueKey":"msg","typeLabel":"string"},"err_code":{"type":"string","description":"Stable, machine-readable error code — branch on this, never on `msg`.\nThe set may grow over time; treat an unrecognized code as\nnon-retryable and surface it to an operator. The enum lists every\ncode the platform can emit; only a subset is reachable per\nendpoint — see [Errors](/errors) for the actionable catalog.\n\n`LcaRecomputeJob.err_code` reports failures from this same `err_*`\nnamespace. `LcaBlocker.err_code` does not — those values are a\nseparate, disjoint set.\n","example":"err_supplier_product_missing_supplier_plant","enum":["err_emigo_daily_limit_reached","err_not_defined","err_not_found","err_not_valid","err_not_authenticated","err_permission_denied","err_account_frozen","err_declaration_not_completed","err_declaration_not_regenerable","err_epd_document_already_exists","err_invalid_product_ids","err_generate_products_limit","err_plant_missing_product_category","err_plant_incomplete_address","err_plant_incomplete_company_fields","err_plant_categories_not_covering_processes","err_plant_categories_not_covering_active_products","err_plant_invalid_category_id","err_plant_invalid_balancing_authority","err_plant_balancing_authority_non_us","err_plant_custom_electricity_mix_not_allowed","err_plant_electricity_mix_mismatch","err_plant_negative_electricity_values","err_plant_electricity_without_mix","err_electricity_plant_production_mismatch","err_lca_mass_balance","err_lca_allocation_data_incomplete","err_lca_production_output_mismatch","err_process_output_below_linked_output","err_product_mass_larger_than_recipe_mass","err_product_category_not_allowed_at_plant","err_water_not_scoped_but_wastewater_is_scoped","err_more_wastewater_than_water","err_project_no_products","err_invalid_product_quantity","err_duplicate_product","err_product_missing_gwp_total","err_elementary_deactivated","err_product_missing_supplier","err_epd_unusable","err_epd_service","err_lca_update_not_queued","err_lca_export_not_ready","err_not_ready_for_epd","err_material_not_hazardous","err_material_no_limited_lifetime","err_invalid_lifetime_years","err_invalid_secondary_percentage_range","err_secondary_percentage_not_customizable","err_moisture_content_not_bio_based","err_invalid_moisture_content_range","err_declaration_not_exists","err_declaration_not_under_review","err_no_manufacturer","err_company_setup_required","err_account_setup_complete","err_wrong_email_domain","err_user_exists","err_inviter_email_not_found","err_composite_used_in_supplier_products","err_composite_name_exists","err_plant_io_invalid_field","err_plant_io_field_not_switchable","err_plant_io_value_not_scoped","err_field_is_plant_level","err_negative_io_value","err_invalid_packaging_material","err_plant_io_mixed_allocation_groups","err_inies_sworn_statement_exists","err_supplier_in_use","err_supplier_name_exists","err_supplier_plant_in_use","err_supplier_plant_name_exists","err_supplier_product_in_recipe","err_supplier_product_in_silo","err_supplier_product_scoped_as_packaging","err_supplier_product_declared_on_a_product","err_supplier_product_missing_supplier_plant","err_silo_in_use","err_silo_name_exists","err_elementary_unknown_matching","err_product_document_not_deletable","err_product_has_declarations","err_product_instance_in_recipe","err_product_instance_has_declarations","err_prechain_product_in_recipe","err_prechain_product_exists","err_prechain_product_not_main_product","err_ccf_exists","err_ccf_not_completed","err_external_id_exists","err_external_owner_invitation_exists","err_external_owner_invitation_not_editable","err_external_owner_invitation_not_withdrawable","err_idempotency_key_reused","err_idempotency_in_progress","err_bulk_upload_invalid_file","err_bulk_upload_duplicate_headers","err_bulk_upload_ambiguous_headers","err_bulk_upload_ambiguous_values","err_bulk_upload_ambiguous_header_language","err_bulk_upload_mixed_header_languages","err_bulk_upload_language_mismatch","err_bulk_upload_value_language_mismatch","err_bulk_upload_obsolete_template","err_bulk_upload_missing_translation","err_material_type_not_found","err_material_type_unvalidated","err_unvalidated_material_type_not_found","err_material_type_not_configured","err_unit_not_allowed_for_material","err_production_process_not_found","err_multiple_production_processes","err_process_plant_mismatch","err_material_process_incompatible","err_process_output_kind_change","err_production_process_required","err_composite_not_allowed_in_recipe","err_elementary_not_allowed_in_recipe","err_elementary_already_allowed_for_product","err_elementary_request_idempotency_conflict","err_prechain_circular_reference","err_product_type_no_recipe","err_product_mass_not_set","err_required_cell_empty","err_plant_not_found","err_plant_no_access","err_multiple_plants","err_product_already_exists","err_multiple_products","err_instance_material_type_mismatch","err_instance_unit_mismatch","err_instance_id_belongs_to_other","err_instance_id_differs_from_stored","err_duplicate_instance_id","err_instance_updated","err_bulk_change","err_bulk_unchanged","err_bulk_skipped_existing","err_instance_years_removed","err_annual_year_outside_stored_period","err_linked_product_type_mismatch","err_tech_spec_not_recognized","err_recipe_incomplete","err_annual_output_invalid","err_annual_economic_value_invalid","err_annual_output_year_required","err_annual_output_year_invalid","err_annual_output_year_duplicate","err_annual_output_year_outside_period","err_orphan_row","err_duplicate_tech_spec","err_empty_sheet","err_no_products","err_tech_spec_invalid_value","err_dtp_service","err_data_translation_wrong_step","err_data_translation_invalid_plant_mapping","err_data_translation_unresolved_reference","err_data_translation_incomplete","err_data_translation_material_not_available","err_data_translation_duplicate_supplier_name","err_recycled_content_proof_missing","err_ppwr_declaration_exists","err_ppwr_declaration_editable_exists","err_ppwr_declaration_frozen","err_ppwr_doc_number_unavailable","err_ppwr_variant_mass_invalid","err_ppwr_variant_dimension_invalid","err_ppwr_variant_material_repeated","err_ppwr_variant_material_type","err_ppwr_invalid_field_key","err_ppwr_supplier_request_not_packaging_manufacturer","err_ppwr_supplier_request_pending","err_ppwr_supplier_request_not_pending","err_ppwr_field_not_requested","err_ppwr_document_limit_reached","err_ppwr_generation_not_packaging_manufacturer","err_ppwr_declaration_incomplete","err_ppwr_invalid_signatory","err_ppwr_invitation_send_failed","err_ppwr_supplier_link_placeholder_missing","err_ppwr_supplier_subject_missing","err_ppwr_supplier_email_missing","err_ppwr_verification_code_limit","err_ppwr_verification_code_send_failed","err_ppwr_email_not_verified","err_ppwr_attestation_required","err_ppwr_document_not_deletable","err_proof_document_limit","err_proof_size_limit","err_supplier_address_country_only","err_supplier_address_ignored","err_supplier_address_not_found","err_transport_distance_unresolved","err_transport_modality_duplicate","err_transport_modality_invalid","err_transport_route_unavailable","err_transport_missing_coordinates","err_transport_no_route","err_transport_same_address","err_transport_route_in_use","err_transport_route_name_exists","err_transport_route_invalid_polyline","err_transport_route_source_ambiguous","err_transport_route_no_materials_selected","err_transport_route_wrong_lane","err_transport_route_missing_source","err_reauthentication_required","err_two_factor_required","err_entitlement_limit_reached","err_program_operator_not_entitled","err_product_category_not_entitled","err_product_category_paused","err_translation_package_required","err_epd_tier_required","err_prechain_category_not_publishable","err_self_upgrade_not_offered","err_self_upgrade_request_required","err_self_upgrade_limit_changed","err_self_upgrade_unavailable","err_self_upgrade_in_progress","err_self_upgrade_already_requested","err_self_upgrade_offer_changed","err_upgrade_approval_not_pending","err_translation_unavailable"],"isRequired":true,"uniqueKey":"err_code","typeLabel":"enum\u003cstring>"},"entitlement_limit":{"oneOf":[{"type":"object","description":"Structured context for `err_entitlement_limit_reached` — which\nlicensed dimension is exhausted and the numbers behind it.\nOmitted on every other error, so check for presence rather than\ncomparing against `null`.\n","required":["dimension","usage","limit"],"properties":{"dimension":{"type":"string","description":"The set may grow as more dimensions become enforced — treat an\nunrecognized value like the generic limit error.\n","enum":["users","plants","product_instances","published_epds"],"isRequired":true,"uniqueKey":"entitlement_limit.oneOf.0.dimension","typeLabel":"enum\u003cstring>"},"usage":{"type":"integer","description":"What the account currently uses in this dimension.","isRequired":true,"uniqueKey":"entitlement_limit.oneOf.0.usage","typeLabel":"integer"},"limit":{"type":"integer","description":"What the license allows.","isRequired":true,"uniqueKey":"entitlement_limit.oneOf.0.limit","typeLabel":"integer"}},"uniqueKey":"entitlement_limit.oneOf.0","typeLabel":"object"},{"type":"null","description":"Structured context for `err_entitlement_limit_reached` — which\nlicensed dimension is exhausted and the numbers behind it.\nOmitted on every other error, so check for presence rather than\ncomparing against `null`.\n","uniqueKey":"entitlement_limit.oneOf.1","typeLabel":"null"}],"uniqueKey":"entitlement_limit","typeLabel":"object | null"},"product_categories":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"product_categories.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"For `err_product_category_not_entitled` and\n`err_product_category_paused`: the names of the product\ncategories the license doesn't include, so a client can show\nthem. Omitted on every other error, so check for presence rather\nthan comparing against `null`.\n","uniqueKey":"product_categories.oneOf.0","typeLabel":"string[]"},{"type":"null","description":"For `err_product_category_not_entitled` and\n`err_product_category_paused`: the names of the product\ncategories the license doesn't include, so a client can show\nthem. Omitted on every other error, so check for presence rather\nthan comparing against `null`.\n","uniqueKey":"product_categories.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_categories","typeLabel":"string[] | null"},"epd_category":{"oneOf":[{"type":"integer","description":"For `err_epd_tier_required`: the pricing category (1-3) the EPD\nbelongs to, which has no EPD tier booked. Omitted on every other\nerror, so check for presence rather than comparing against `null`.\n","uniqueKey":"epd_category.oneOf.0","typeLabel":"integer"},{"type":"null","description":"For `err_epd_tier_required`: the pricing category (1-3) the EPD\nbelongs to, which has no EPD tier booked. Omitted on every other\nerror, so check for presence rather than comparing against `null`.\n","uniqueKey":"epd_category.oneOf.1","typeLabel":"null"}],"uniqueKey":"epd_category","typeLabel":"integer | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"msg":"supplier product requires a supplier plant","err_code":"err_supplier_product_missing_supplier_plant","entitlement_limit":{"dimension":"users","usage":123,"limit":123},"product_categories":["\u003cstring>"],"epd_category":123}}},"exampleType":"generated"}},"exampleType":"generated"},"ac694138-a5d2-420a-92e9-0818d97aecec":{"description":"Product instance not found.","content":{"application/json":{"schema":{"type":"object","required":["msg","err_code"],"properties":{"msg":{"type":"string","description":"Human-readable explanation, for logs and operators. Do not parse it.","example":"supplier product requires a supplier plant","isRequired":true,"uniqueKey":"msg","typeLabel":"string"},"err_code":{"type":"string","description":"Stable, machine-readable error code — branch on this, never on `msg`.\nThe set may grow over time; treat an unrecognized code as\nnon-retryable and surface it to an operator. The enum lists every\ncode the platform can emit; only a subset is reachable per\nendpoint — see [Errors](/errors) for the actionable catalog.\n\n`LcaRecomputeJob.err_code` reports failures from this same `err_*`\nnamespace. `LcaBlocker.err_code` does not — those values are a\nseparate, disjoint set.\n","example":"err_supplier_product_missing_supplier_plant","enum":["err_emigo_daily_limit_reached","err_not_defined","err_not_found","err_not_valid","err_not_authenticated","err_permission_denied","err_account_frozen","err_declaration_not_completed","err_declaration_not_regenerable","err_epd_document_already_exists","err_invalid_product_ids","err_generate_products_limit","err_plant_missing_product_category","err_plant_incomplete_address","err_plant_incomplete_company_fields","err_plant_categories_not_covering_processes","err_plant_categories_not_covering_active_products","err_plant_invalid_category_id","err_plant_invalid_balancing_authority","err_plant_balancing_authority_non_us","err_plant_custom_electricity_mix_not_allowed","err_plant_electricity_mix_mismatch","err_plant_negative_electricity_values","err_plant_electricity_without_mix","err_electricity_plant_production_mismatch","err_lca_mass_balance","err_lca_allocation_data_incomplete","err_lca_production_output_mismatch","err_process_output_below_linked_output","err_product_mass_larger_than_recipe_mass","err_product_category_not_allowed_at_plant","err_water_not_scoped_but_wastewater_is_scoped","err_more_wastewater_than_water","err_project_no_products","err_invalid_product_quantity","err_duplicate_product","err_product_missing_gwp_total","err_elementary_deactivated","err_product_missing_supplier","err_epd_unusable","err_epd_service","err_lca_update_not_queued","err_lca_export_not_ready","err_not_ready_for_epd","err_material_not_hazardous","err_material_no_limited_lifetime","err_invalid_lifetime_years","err_invalid_secondary_percentage_range","err_secondary_percentage_not_customizable","err_moisture_content_not_bio_based","err_invalid_moisture_content_range","err_declaration_not_exists","err_declaration_not_under_review","err_no_manufacturer","err_company_setup_required","err_account_setup_complete","err_wrong_email_domain","err_user_exists","err_inviter_email_not_found","err_composite_used_in_supplier_products","err_composite_name_exists","err_plant_io_invalid_field","err_plant_io_field_not_switchable","err_plant_io_value_not_scoped","err_field_is_plant_level","err_negative_io_value","err_invalid_packaging_material","err_plant_io_mixed_allocation_groups","err_inies_sworn_statement_exists","err_supplier_in_use","err_supplier_name_exists","err_supplier_plant_in_use","err_supplier_plant_name_exists","err_supplier_product_in_recipe","err_supplier_product_in_silo","err_supplier_product_scoped_as_packaging","err_supplier_product_declared_on_a_product","err_supplier_product_missing_supplier_plant","err_silo_in_use","err_silo_name_exists","err_elementary_unknown_matching","err_product_document_not_deletable","err_product_has_declarations","err_product_instance_in_recipe","err_product_instance_has_declarations","err_prechain_product_in_recipe","err_prechain_product_exists","err_prechain_product_not_main_product","err_ccf_exists","err_ccf_not_completed","err_external_id_exists","err_external_owner_invitation_exists","err_external_owner_invitation_not_editable","err_external_owner_invitation_not_withdrawable","err_idempotency_key_reused","err_idempotency_in_progress","err_bulk_upload_invalid_file","err_bulk_upload_duplicate_headers","err_bulk_upload_ambiguous_headers","err_bulk_upload_ambiguous_values","err_bulk_upload_ambiguous_header_language","err_bulk_upload_mixed_header_languages","err_bulk_upload_language_mismatch","err_bulk_upload_value_language_mismatch","err_bulk_upload_obsolete_template","err_bulk_upload_missing_translation","err_material_type_not_found","err_material_type_unvalidated","err_unvalidated_material_type_not_found","err_material_type_not_configured","err_unit_not_allowed_for_material","err_production_process_not_found","err_multiple_production_processes","err_process_plant_mismatch","err_material_process_incompatible","err_process_output_kind_change","err_production_process_required","err_composite_not_allowed_in_recipe","err_elementary_not_allowed_in_recipe","err_elementary_already_allowed_for_product","err_elementary_request_idempotency_conflict","err_prechain_circular_reference","err_product_type_no_recipe","err_product_mass_not_set","err_required_cell_empty","err_plant_not_found","err_plant_no_access","err_multiple_plants","err_product_already_exists","err_multiple_products","err_instance_material_type_mismatch","err_instance_unit_mismatch","err_instance_id_belongs_to_other","err_instance_id_differs_from_stored","err_duplicate_instance_id","err_instance_updated","err_bulk_change","err_bulk_unchanged","err_bulk_skipped_existing","err_instance_years_removed","err_annual_year_outside_stored_period","err_linked_product_type_mismatch","err_tech_spec_not_recognized","err_recipe_incomplete","err_annual_output_invalid","err_annual_economic_value_invalid","err_annual_output_year_required","err_annual_output_year_invalid","err_annual_output_year_duplicate","err_annual_output_year_outside_period","err_orphan_row","err_duplicate_tech_spec","err_empty_sheet","err_no_products","err_tech_spec_invalid_value","err_dtp_service","err_data_translation_wrong_step","err_data_translation_invalid_plant_mapping","err_data_translation_unresolved_reference","err_data_translation_incomplete","err_data_translation_material_not_available","err_data_translation_duplicate_supplier_name","err_recycled_content_proof_missing","err_ppwr_declaration_exists","err_ppwr_declaration_editable_exists","err_ppwr_declaration_frozen","err_ppwr_doc_number_unavailable","err_ppwr_variant_mass_invalid","err_ppwr_variant_dimension_invalid","err_ppwr_variant_material_repeated","err_ppwr_variant_material_type","err_ppwr_invalid_field_key","err_ppwr_supplier_request_not_packaging_manufacturer","err_ppwr_supplier_request_pending","err_ppwr_supplier_request_not_pending","err_ppwr_field_not_requested","err_ppwr_document_limit_reached","err_ppwr_generation_not_packaging_manufacturer","err_ppwr_declaration_incomplete","err_ppwr_invalid_signatory","err_ppwr_invitation_send_failed","err_ppwr_supplier_link_placeholder_missing","err_ppwr_supplier_subject_missing","err_ppwr_supplier_email_missing","err_ppwr_verification_code_limit","err_ppwr_verification_code_send_failed","err_ppwr_email_not_verified","err_ppwr_attestation_required","err_ppwr_document_not_deletable","err_proof_document_limit","err_proof_size_limit","err_supplier_address_country_only","err_supplier_address_ignored","err_supplier_address_not_found","err_transport_distance_unresolved","err_transport_modality_duplicate","err_transport_modality_invalid","err_transport_route_unavailable","err_transport_missing_coordinates","err_transport_no_route","err_transport_same_address","err_transport_route_in_use","err_transport_route_name_exists","err_transport_route_invalid_polyline","err_transport_route_source_ambiguous","err_transport_route_no_materials_selected","err_transport_route_wrong_lane","err_transport_route_missing_source","err_reauthentication_required","err_two_factor_required","err_entitlement_limit_reached","err_program_operator_not_entitled","err_product_category_not_entitled","err_product_category_paused","err_translation_package_required","err_epd_tier_required","err_prechain_category_not_publishable","err_self_upgrade_not_offered","err_self_upgrade_request_required","err_self_upgrade_limit_changed","err_self_upgrade_unavailable","err_self_upgrade_in_progress","err_self_upgrade_already_requested","err_self_upgrade_offer_changed","err_upgrade_approval_not_pending","err_translation_unavailable"],"isRequired":true,"uniqueKey":"err_code","typeLabel":"enum\u003cstring>"},"entitlement_limit":{"oneOf":[{"type":"object","description":"Structured context for `err_entitlement_limit_reached` — which\nlicensed dimension is exhausted and the numbers behind it.\nOmitted on every other error, so check for presence rather than\ncomparing against `null`.\n","required":["dimension","usage","limit"],"properties":{"dimension":{"type":"string","description":"The set may grow as more dimensions become enforced — treat an\nunrecognized value like the generic limit error.\n","enum":["users","plants","product_instances","published_epds"],"isRequired":true,"uniqueKey":"entitlement_limit.oneOf.0.dimension","typeLabel":"enum\u003cstring>"},"usage":{"type":"integer","description":"What the account currently uses in this dimension.","isRequired":true,"uniqueKey":"entitlement_limit.oneOf.0.usage","typeLabel":"integer"},"limit":{"type":"integer","description":"What the license allows.","isRequired":true,"uniqueKey":"entitlement_limit.oneOf.0.limit","typeLabel":"integer"}},"uniqueKey":"entitlement_limit.oneOf.0","typeLabel":"object"},{"type":"null","description":"Structured context for `err_entitlement_limit_reached` — which\nlicensed dimension is exhausted and the numbers behind it.\nOmitted on every other error, so check for presence rather than\ncomparing against `null`.\n","uniqueKey":"entitlement_limit.oneOf.1","typeLabel":"null"}],"uniqueKey":"entitlement_limit","typeLabel":"object | null"},"product_categories":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"product_categories.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"For `err_product_category_not_entitled` and\n`err_product_category_paused`: the names of the product\ncategories the license doesn't include, so a client can show\nthem. Omitted on every other error, so check for presence rather\nthan comparing against `null`.\n","uniqueKey":"product_categories.oneOf.0","typeLabel":"string[]"},{"type":"null","description":"For `err_product_category_not_entitled` and\n`err_product_category_paused`: the names of the product\ncategories the license doesn't include, so a client can show\nthem. Omitted on every other error, so check for presence rather\nthan comparing against `null`.\n","uniqueKey":"product_categories.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_categories","typeLabel":"string[] | null"},"epd_category":{"oneOf":[{"type":"integer","description":"For `err_epd_tier_required`: the pricing category (1-3) the EPD\nbelongs to, which has no EPD tier booked. Omitted on every other\nerror, so check for presence rather than comparing against `null`.\n","uniqueKey":"epd_category.oneOf.0","typeLabel":"integer"},{"type":"null","description":"For `err_epd_tier_required`: the pricing category (1-3) the EPD\nbelongs to, which has no EPD tier booked. Omitted on every other\nerror, so check for presence rather than comparing against `null`.\n","uniqueKey":"epd_category.oneOf.1","typeLabel":"null"}],"uniqueKey":"epd_category","typeLabel":"integer | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"msg":"supplier product requires a supplier plant","err_code":"err_supplier_product_missing_supplier_plant","entitlement_limit":{"dimension":"users","usage":123,"limit":123},"product_categories":["\u003cstring>"],"epd_category":123}}},"exampleType":"generated"}},"exampleType":"generated"},"d763a92c-b0b3-4265-8763-569cd5c14fd3":{"description":"Validation error, including a malformed path `id`, an unresolved reference, a duplicate `(type, ref)`, a non-kg mass, or a cycle.","content":{"application/json":{"schema":{"type":"object","required":["msg","err_code"],"properties":{"msg":{"type":"string","description":"Human-readable explanation, for logs and operators. Do not parse it.","example":"supplier product requires a supplier plant","isRequired":true,"uniqueKey":"msg","typeLabel":"string"},"err_code":{"type":"string","description":"Stable, machine-readable error code — branch on this, never on `msg`.\nThe set may grow over time; treat an unrecognized code as\nnon-retryable and surface it to an operator. The enum lists every\ncode the platform can emit; only a subset is reachable per\nendpoint — see [Errors](/errors) for the actionable catalog.\n\n`LcaRecomputeJob.err_code` reports failures from this same `err_*`\nnamespace. `LcaBlocker.err_code` does not — those values are a\nseparate, disjoint set.\n","example":"err_supplier_product_missing_supplier_plant","enum":["err_emigo_daily_limit_reached","err_not_defined","err_not_found","err_not_valid","err_not_authenticated","err_permission_denied","err_account_frozen","err_declaration_not_completed","err_declaration_not_regenerable","err_epd_document_already_exists","err_invalid_product_ids","err_generate_products_limit","err_plant_missing_product_category","err_plant_incomplete_address","err_plant_incomplete_company_fields","err_plant_categories_not_covering_processes","err_plant_categories_not_covering_active_products","err_plant_invalid_category_id","err_plant_invalid_balancing_authority","err_plant_balancing_authority_non_us","err_plant_custom_electricity_mix_not_allowed","err_plant_electricity_mix_mismatch","err_plant_negative_electricity_values","err_plant_electricity_without_mix","err_electricity_plant_production_mismatch","err_lca_mass_balance","err_lca_allocation_data_incomplete","err_lca_production_output_mismatch","err_process_output_below_linked_output","err_product_mass_larger_than_recipe_mass","err_product_category_not_allowed_at_plant","err_water_not_scoped_but_wastewater_is_scoped","err_more_wastewater_than_water","err_project_no_products","err_invalid_product_quantity","err_duplicate_product","err_product_missing_gwp_total","err_elementary_deactivated","err_product_missing_supplier","err_epd_unusable","err_epd_service","err_lca_update_not_queued","err_lca_export_not_ready","err_not_ready_for_epd","err_material_not_hazardous","err_material_no_limited_lifetime","err_invalid_lifetime_years","err_invalid_secondary_percentage_range","err_secondary_percentage_not_customizable","err_moisture_content_not_bio_based","err_invalid_moisture_content_range","err_declaration_not_exists","err_declaration_not_under_review","err_no_manufacturer","err_company_setup_required","err_account_setup_complete","err_wrong_email_domain","err_user_exists","err_inviter_email_not_found","err_composite_used_in_supplier_products","err_composite_name_exists","err_plant_io_invalid_field","err_plant_io_field_not_switchable","err_plant_io_value_not_scoped","err_field_is_plant_level","err_negative_io_value","err_invalid_packaging_material","err_plant_io_mixed_allocation_groups","err_inies_sworn_statement_exists","err_supplier_in_use","err_supplier_name_exists","err_supplier_plant_in_use","err_supplier_plant_name_exists","err_supplier_product_in_recipe","err_supplier_product_in_silo","err_supplier_product_scoped_as_packaging","err_supplier_product_declared_on_a_product","err_supplier_product_missing_supplier_plant","err_silo_in_use","err_silo_name_exists","err_elementary_unknown_matching","err_product_document_not_deletable","err_product_has_declarations","err_product_instance_in_recipe","err_product_instance_has_declarations","err_prechain_product_in_recipe","err_prechain_product_exists","err_prechain_product_not_main_product","err_ccf_exists","err_ccf_not_completed","err_external_id_exists","err_external_owner_invitation_exists","err_external_owner_invitation_not_editable","err_external_owner_invitation_not_withdrawable","err_idempotency_key_reused","err_idempotency_in_progress","err_bulk_upload_invalid_file","err_bulk_upload_duplicate_headers","err_bulk_upload_ambiguous_headers","err_bulk_upload_ambiguous_values","err_bulk_upload_ambiguous_header_language","err_bulk_upload_mixed_header_languages","err_bulk_upload_language_mismatch","err_bulk_upload_value_language_mismatch","err_bulk_upload_obsolete_template","err_bulk_upload_missing_translation","err_material_type_not_found","err_material_type_unvalidated","err_unvalidated_material_type_not_found","err_material_type_not_configured","err_unit_not_allowed_for_material","err_production_process_not_found","err_multiple_production_processes","err_process_plant_mismatch","err_material_process_incompatible","err_process_output_kind_change","err_production_process_required","err_composite_not_allowed_in_recipe","err_elementary_not_allowed_in_recipe","err_elementary_already_allowed_for_product","err_elementary_request_idempotency_conflict","err_prechain_circular_reference","err_product_type_no_recipe","err_product_mass_not_set","err_required_cell_empty","err_plant_not_found","err_plant_no_access","err_multiple_plants","err_product_already_exists","err_multiple_products","err_instance_material_type_mismatch","err_instance_unit_mismatch","err_instance_id_belongs_to_other","err_instance_id_differs_from_stored","err_duplicate_instance_id","err_instance_updated","err_bulk_change","err_bulk_unchanged","err_bulk_skipped_existing","err_instance_years_removed","err_annual_year_outside_stored_period","err_linked_product_type_mismatch","err_tech_spec_not_recognized","err_recipe_incomplete","err_annual_output_invalid","err_annual_economic_value_invalid","err_annual_output_year_required","err_annual_output_year_invalid","err_annual_output_year_duplicate","err_annual_output_year_outside_period","err_orphan_row","err_duplicate_tech_spec","err_empty_sheet","err_no_products","err_tech_spec_invalid_value","err_dtp_service","err_data_translation_wrong_step","err_data_translation_invalid_plant_mapping","err_data_translation_unresolved_reference","err_data_translation_incomplete","err_data_translation_material_not_available","err_data_translation_duplicate_supplier_name","err_recycled_content_proof_missing","err_ppwr_declaration_exists","err_ppwr_declaration_editable_exists","err_ppwr_declaration_frozen","err_ppwr_doc_number_unavailable","err_ppwr_variant_mass_invalid","err_ppwr_variant_dimension_invalid","err_ppwr_variant_material_repeated","err_ppwr_variant_material_type","err_ppwr_invalid_field_key","err_ppwr_supplier_request_not_packaging_manufacturer","err_ppwr_supplier_request_pending","err_ppwr_supplier_request_not_pending","err_ppwr_field_not_requested","err_ppwr_document_limit_reached","err_ppwr_generation_not_packaging_manufacturer","err_ppwr_declaration_incomplete","err_ppwr_invalid_signatory","err_ppwr_invitation_send_failed","err_ppwr_supplier_link_placeholder_missing","err_ppwr_supplier_subject_missing","err_ppwr_supplier_email_missing","err_ppwr_verification_code_limit","err_ppwr_verification_code_send_failed","err_ppwr_email_not_verified","err_ppwr_attestation_required","err_ppwr_document_not_deletable","err_proof_document_limit","err_proof_size_limit","err_supplier_address_country_only","err_supplier_address_ignored","err_supplier_address_not_found","err_transport_distance_unresolved","err_transport_modality_duplicate","err_transport_modality_invalid","err_transport_route_unavailable","err_transport_missing_coordinates","err_transport_no_route","err_transport_same_address","err_transport_route_in_use","err_transport_route_name_exists","err_transport_route_invalid_polyline","err_transport_route_source_ambiguous","err_transport_route_no_materials_selected","err_transport_route_wrong_lane","err_transport_route_missing_source","err_reauthentication_required","err_two_factor_required","err_entitlement_limit_reached","err_program_operator_not_entitled","err_product_category_not_entitled","err_product_category_paused","err_translation_package_required","err_epd_tier_required","err_prechain_category_not_publishable","err_self_upgrade_not_offered","err_self_upgrade_request_required","err_self_upgrade_limit_changed","err_self_upgrade_unavailable","err_self_upgrade_in_progress","err_self_upgrade_already_requested","err_self_upgrade_offer_changed","err_upgrade_approval_not_pending","err_translation_unavailable"],"isRequired":true,"uniqueKey":"err_code","typeLabel":"enum\u003cstring>"},"entitlement_limit":{"oneOf":[{"type":"object","description":"Structured context for `err_entitlement_limit_reached` — which\nlicensed dimension is exhausted and the numbers behind it.\nOmitted on every other error, so check for presence rather than\ncomparing against `null`.\n","required":["dimension","usage","limit"],"properties":{"dimension":{"type":"string","description":"The set may grow as more dimensions become enforced — treat an\nunrecognized value like the generic limit error.\n","enum":["users","plants","product_instances","published_epds"],"isRequired":true,"uniqueKey":"entitlement_limit.oneOf.0.dimension","typeLabel":"enum\u003cstring>"},"usage":{"type":"integer","description":"What the account currently uses in this dimension.","isRequired":true,"uniqueKey":"entitlement_limit.oneOf.0.usage","typeLabel":"integer"},"limit":{"type":"integer","description":"What the license allows.","isRequired":true,"uniqueKey":"entitlement_limit.oneOf.0.limit","typeLabel":"integer"}},"uniqueKey":"entitlement_limit.oneOf.0","typeLabel":"object"},{"type":"null","description":"Structured context for `err_entitlement_limit_reached` — which\nlicensed dimension is exhausted and the numbers behind it.\nOmitted on every other error, so check for presence rather than\ncomparing against `null`.\n","uniqueKey":"entitlement_limit.oneOf.1","typeLabel":"null"}],"uniqueKey":"entitlement_limit","typeLabel":"object | null"},"product_categories":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"product_categories.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"For `err_product_category_not_entitled` and\n`err_product_category_paused`: the names of the product\ncategories the license doesn't include, so a client can show\nthem. Omitted on every other error, so check for presence rather\nthan comparing against `null`.\n","uniqueKey":"product_categories.oneOf.0","typeLabel":"string[]"},{"type":"null","description":"For `err_product_category_not_entitled` and\n`err_product_category_paused`: the names of the product\ncategories the license doesn't include, so a client can show\nthem. Omitted on every other error, so check for presence rather\nthan comparing against `null`.\n","uniqueKey":"product_categories.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_categories","typeLabel":"string[] | null"},"epd_category":{"oneOf":[{"type":"integer","description":"For `err_epd_tier_required`: the pricing category (1-3) the EPD\nbelongs to, which has no EPD tier booked. Omitted on every other\nerror, so check for presence rather than comparing against `null`.\n","uniqueKey":"epd_category.oneOf.0","typeLabel":"integer"},{"type":"null","description":"For `err_epd_tier_required`: the pricing category (1-3) the EPD\nbelongs to, which has no EPD tier booked. Omitted on every other\nerror, so check for presence rather than comparing against `null`.\n","uniqueKey":"epd_category.oneOf.1","typeLabel":"null"}],"uniqueKey":"epd_category","typeLabel":"integer | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"msg":"supplier product requires a supplier plant","err_code":"err_supplier_product_missing_supplier_plant","entitlement_limit":{"dimension":"users","usage":123,"limit":123},"product_categories":["\u003cstring>"],"epd_category":123}}},"exampleType":"generated"}},"exampleType":"generated"},"fe5713e4-7f2a-45ed-8d90-89fb4e7bd07f":{"description":"An unexpected server error occurred. Surface it to an operator.","content":{"application/json":{"schema":{"type":"object","required":["msg","err_code"],"properties":{"msg":{"type":"string","description":"Human-readable explanation, for logs and operators. Do not parse it.","example":"supplier product requires a supplier plant","isRequired":true,"uniqueKey":"msg","typeLabel":"string"},"err_code":{"type":"string","description":"Stable, machine-readable error code — branch on this, never on `msg`.\nThe set may grow over time; treat an unrecognized code as\nnon-retryable and surface it to an operator. The enum lists every\ncode the platform can emit; only a subset is reachable per\nendpoint — see [Errors](/errors) for the actionable catalog.\n\n`LcaRecomputeJob.err_code` reports failures from this same `err_*`\nnamespace. `LcaBlocker.err_code` does not — those values are a\nseparate, disjoint set.\n","example":"err_supplier_product_missing_supplier_plant","enum":["err_emigo_daily_limit_reached","err_not_defined","err_not_found","err_not_valid","err_not_authenticated","err_permission_denied","err_account_frozen","err_declaration_not_completed","err_declaration_not_regenerable","err_epd_document_already_exists","err_invalid_product_ids","err_generate_products_limit","err_plant_missing_product_category","err_plant_incomplete_address","err_plant_incomplete_company_fields","err_plant_categories_not_covering_processes","err_plant_categories_not_covering_active_products","err_plant_invalid_category_id","err_plant_invalid_balancing_authority","err_plant_balancing_authority_non_us","err_plant_custom_electricity_mix_not_allowed","err_plant_electricity_mix_mismatch","err_plant_negative_electricity_values","err_plant_electricity_without_mix","err_electricity_plant_production_mismatch","err_lca_mass_balance","err_lca_allocation_data_incomplete","err_lca_production_output_mismatch","err_process_output_below_linked_output","err_product_mass_larger_than_recipe_mass","err_product_category_not_allowed_at_plant","err_water_not_scoped_but_wastewater_is_scoped","err_more_wastewater_than_water","err_project_no_products","err_invalid_product_quantity","err_duplicate_product","err_product_missing_gwp_total","err_elementary_deactivated","err_product_missing_supplier","err_epd_unusable","err_epd_service","err_lca_update_not_queued","err_lca_export_not_ready","err_not_ready_for_epd","err_material_not_hazardous","err_material_no_limited_lifetime","err_invalid_lifetime_years","err_invalid_secondary_percentage_range","err_secondary_percentage_not_customizable","err_moisture_content_not_bio_based","err_invalid_moisture_content_range","err_declaration_not_exists","err_declaration_not_under_review","err_no_manufacturer","err_company_setup_required","err_account_setup_complete","err_wrong_email_domain","err_user_exists","err_inviter_email_not_found","err_composite_used_in_supplier_products","err_composite_name_exists","err_plant_io_invalid_field","err_plant_io_field_not_switchable","err_plant_io_value_not_scoped","err_field_is_plant_level","err_negative_io_value","err_invalid_packaging_material","err_plant_io_mixed_allocation_groups","err_inies_sworn_statement_exists","err_supplier_in_use","err_supplier_name_exists","err_supplier_plant_in_use","err_supplier_plant_name_exists","err_supplier_product_in_recipe","err_supplier_product_in_silo","err_supplier_product_scoped_as_packaging","err_supplier_product_declared_on_a_product","err_supplier_product_missing_supplier_plant","err_silo_in_use","err_silo_name_exists","err_elementary_unknown_matching","err_product_document_not_deletable","err_product_has_declarations","err_product_instance_in_recipe","err_product_instance_has_declarations","err_prechain_product_in_recipe","err_prechain_product_exists","err_prechain_product_not_main_product","err_ccf_exists","err_ccf_not_completed","err_external_id_exists","err_external_owner_invitation_exists","err_external_owner_invitation_not_editable","err_external_owner_invitation_not_withdrawable","err_idempotency_key_reused","err_idempotency_in_progress","err_bulk_upload_invalid_file","err_bulk_upload_duplicate_headers","err_bulk_upload_ambiguous_headers","err_bulk_upload_ambiguous_values","err_bulk_upload_ambiguous_header_language","err_bulk_upload_mixed_header_languages","err_bulk_upload_language_mismatch","err_bulk_upload_value_language_mismatch","err_bulk_upload_obsolete_template","err_bulk_upload_missing_translation","err_material_type_not_found","err_material_type_unvalidated","err_unvalidated_material_type_not_found","err_material_type_not_configured","err_unit_not_allowed_for_material","err_production_process_not_found","err_multiple_production_processes","err_process_plant_mismatch","err_material_process_incompatible","err_process_output_kind_change","err_production_process_required","err_composite_not_allowed_in_recipe","err_elementary_not_allowed_in_recipe","err_elementary_already_allowed_for_product","err_elementary_request_idempotency_conflict","err_prechain_circular_reference","err_product_type_no_recipe","err_product_mass_not_set","err_required_cell_empty","err_plant_not_found","err_plant_no_access","err_multiple_plants","err_product_already_exists","err_multiple_products","err_instance_material_type_mismatch","err_instance_unit_mismatch","err_instance_id_belongs_to_other","err_instance_id_differs_from_stored","err_duplicate_instance_id","err_instance_updated","err_bulk_change","err_bulk_unchanged","err_bulk_skipped_existing","err_instance_years_removed","err_annual_year_outside_stored_period","err_linked_product_type_mismatch","err_tech_spec_not_recognized","err_recipe_incomplete","err_annual_output_invalid","err_annual_economic_value_invalid","err_annual_output_year_required","err_annual_output_year_invalid","err_annual_output_year_duplicate","err_annual_output_year_outside_period","err_orphan_row","err_duplicate_tech_spec","err_empty_sheet","err_no_products","err_tech_spec_invalid_value","err_dtp_service","err_data_translation_wrong_step","err_data_translation_invalid_plant_mapping","err_data_translation_unresolved_reference","err_data_translation_incomplete","err_data_translation_material_not_available","err_data_translation_duplicate_supplier_name","err_recycled_content_proof_missing","err_ppwr_declaration_exists","err_ppwr_declaration_editable_exists","err_ppwr_declaration_frozen","err_ppwr_doc_number_unavailable","err_ppwr_variant_mass_invalid","err_ppwr_variant_dimension_invalid","err_ppwr_variant_material_repeated","err_ppwr_variant_material_type","err_ppwr_invalid_field_key","err_ppwr_supplier_request_not_packaging_manufacturer","err_ppwr_supplier_request_pending","err_ppwr_supplier_request_not_pending","err_ppwr_field_not_requested","err_ppwr_document_limit_reached","err_ppwr_generation_not_packaging_manufacturer","err_ppwr_declaration_incomplete","err_ppwr_invalid_signatory","err_ppwr_invitation_send_failed","err_ppwr_supplier_link_placeholder_missing","err_ppwr_supplier_subject_missing","err_ppwr_supplier_email_missing","err_ppwr_verification_code_limit","err_ppwr_verification_code_send_failed","err_ppwr_email_not_verified","err_ppwr_attestation_required","err_ppwr_document_not_deletable","err_proof_document_limit","err_proof_size_limit","err_supplier_address_country_only","err_supplier_address_ignored","err_supplier_address_not_found","err_transport_distance_unresolved","err_transport_modality_duplicate","err_transport_modality_invalid","err_transport_route_unavailable","err_transport_missing_coordinates","err_transport_no_route","err_transport_same_address","err_transport_route_in_use","err_transport_route_name_exists","err_transport_route_invalid_polyline","err_transport_route_source_ambiguous","err_transport_route_no_materials_selected","err_transport_route_wrong_lane","err_transport_route_missing_source","err_reauthentication_required","err_two_factor_required","err_entitlement_limit_reached","err_program_operator_not_entitled","err_product_category_not_entitled","err_product_category_paused","err_translation_package_required","err_epd_tier_required","err_prechain_category_not_publishable","err_self_upgrade_not_offered","err_self_upgrade_request_required","err_self_upgrade_limit_changed","err_self_upgrade_unavailable","err_self_upgrade_in_progress","err_self_upgrade_already_requested","err_self_upgrade_offer_changed","err_upgrade_approval_not_pending","err_translation_unavailable"],"isRequired":true,"uniqueKey":"err_code","typeLabel":"enum\u003cstring>"},"entitlement_limit":{"oneOf":[{"type":"object","description":"Structured context for `err_entitlement_limit_reached` — which\nlicensed dimension is exhausted and the numbers behind it.\nOmitted on every other error, so check for presence rather than\ncomparing against `null`.\n","required":["dimension","usage","limit"],"properties":{"dimension":{"type":"string","description":"The set may grow as more dimensions become enforced — treat an\nunrecognized value like the generic limit error.\n","enum":["users","plants","product_instances","published_epds"],"isRequired":true,"uniqueKey":"entitlement_limit.oneOf.0.dimension","typeLabel":"enum\u003cstring>"},"usage":{"type":"integer","description":"What the account currently uses in this dimension.","isRequired":true,"uniqueKey":"entitlement_limit.oneOf.0.usage","typeLabel":"integer"},"limit":{"type":"integer","description":"What the license allows.","isRequired":true,"uniqueKey":"entitlement_limit.oneOf.0.limit","typeLabel":"integer"}},"uniqueKey":"entitlement_limit.oneOf.0","typeLabel":"object"},{"type":"null","description":"Structured context for `err_entitlement_limit_reached` — which\nlicensed dimension is exhausted and the numbers behind it.\nOmitted on every other error, so check for presence rather than\ncomparing against `null`.\n","uniqueKey":"entitlement_limit.oneOf.1","typeLabel":"null"}],"uniqueKey":"entitlement_limit","typeLabel":"object | null"},"product_categories":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"product_categories.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"For `err_product_category_not_entitled` and\n`err_product_category_paused`: the names of the product\ncategories the license doesn't include, so a client can show\nthem. Omitted on every other error, so check for presence rather\nthan comparing against `null`.\n","uniqueKey":"product_categories.oneOf.0","typeLabel":"string[]"},{"type":"null","description":"For `err_product_category_not_entitled` and\n`err_product_category_paused`: the names of the product\ncategories the license doesn't include, so a client can show\nthem. Omitted on every other error, so check for presence rather\nthan comparing against `null`.\n","uniqueKey":"product_categories.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_categories","typeLabel":"string[] | null"},"epd_category":{"oneOf":[{"type":"integer","description":"For `err_epd_tier_required`: the pricing category (1-3) the EPD\nbelongs to, which has no EPD tier booked. Omitted on every other\nerror, so check for presence rather than comparing against `null`.\n","uniqueKey":"epd_category.oneOf.0","typeLabel":"integer"},{"type":"null","description":"For `err_epd_tier_required`: the pricing category (1-3) the EPD\nbelongs to, which has no EPD tier booked. Omitted on every other\nerror, so check for presence rather than comparing against `null`.\n","uniqueKey":"epd_category.oneOf.1","typeLabel":"null"}],"uniqueKey":"epd_category","typeLabel":"integer | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"msg":"supplier product requires a supplier plant","err_code":"err_supplier_product_missing_supplier_plant","entitlement_limit":{"dimension":"users","usage":123,"limit":123},"product_categories":["\u003cstring>"],"epd_category":123}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"2ab579d0-4684-4603-a7c2-22c2b153e15a":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Per-manufacturer API key in the `X-API-Key` header, format\n`emidat-{key_id}-{secret}` where `key_id` is a random public handle.\nIssued by an owner in the Emidat\ndashboard; carries its own permission scopes, optional plant\nrestrictions, and optional expiry. A revoked, expired, or unknown key\nreturns 401. See the Authentication guide for details.\n","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"a42dc66d-03f9-4209-983c-652cfedae855":{"url":"https://api.emidat.com","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Per-manufacturer API key in the `X-API-Key` header, format\n`emidat-{key_id}-{secret}` where `key_id` is a random public handle.\nIssued by an owner in the Emidat\ndashboard; carries its own permission scopes, optional plant\nrestrictions, and optional expiry. A revoked, expired, or unknown key\nreturns 401. See the Authentication guide for details.\n","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"X-API-Key","type":"string","description":"Per-manufacturer API key in the `X-API-Key` header, format\n`emidat-{key_id}-{secret}` where `key_id` is a random public handle.\nIssued by an owner in the Emidat\ndashboard; carries its own permission scopes, optional plant\nrestrictions, and optional expiry. A revoked, expired, or unknown key\nreturns 401. See the Authentication guide for details.\n","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"X-API-Key"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"emidat","siteName":"Emidat API","title":"Replace BOM - Emidat API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-11T22:42:10.825Z","originalFileLocation":"api-reference/product-instances/bom.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";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=\"light\"}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=\"Replaces the instance\u0026#x27;s entire BOM. Re-sending the same components is a no-op (idempotent). Requires edit:recipes. Keys issued before that scope existed carry it wherever they carry edit:products. Every component must sit at a plant your key can reach — access to the instance does not extend to what its BOM points at. A by-product of its production process takes no components (err_product_type_no_recipe): its main products\u0026#x27; recipes cover its share.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Emidat API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/emidat/vlF3Kpxi6ZOBtvHL/_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/emidat/vlF3Kpxi6ZOBtvHL/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/emidat/vlF3Kpxi6ZOBtvHL/_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/emidat/vlF3Kpxi6ZOBtvHL/_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/emidat/vlF3Kpxi6ZOBtvHL/_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/emidat/vlF3Kpxi6ZOBtvHL/_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/emidat/vlF3Kpxi6ZOBtvHL/_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/emidat/vlF3Kpxi6ZOBtvHL/_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/emidat/vlF3Kpxi6ZOBtvHL/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Replace BOM - Emidat API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Replaces the instance\u0026#x27;s entire BOM. Re-sending the same components is a no-op (idempotent). Requires edit:recipes. Keys issued before that scope existed carry it wherever they carry edit:products. Every component must sit at a plant your key can reach — access to the instance does not extend to what its BOM points at. A by-product of its production process takes no components (err_product_type_no_recipe): its main products\u0026#x27; recipes cover its share.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Emidat API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.emidat.com/api-reference/product-instances/bom\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://emidat.mintlify.app/_mintlify/api/og/v2?division=Product+Instances\u0026amp;title=Replace+BOM\u0026amp;description=Replaces+the+instance%27s+entire+BOM.+Re-sending+the+same+components+is+a+no-op+%28idempotent%29.%0A%0ARequires+%60edit%3Arecipes%60.+Keys+issued+before+that+scope+existed+carr\u0026amp;theme=df6acf5ffa3b5355e046b553\u0026amp;signature=bc9e965ccf29c8d3c92c925abec3243431362ed79c733269e7cb210ef67ddf52\">\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 BOM - Emidat API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Replaces the instance\u0026#x27;s entire BOM. Re-sending the same components is a no-op (idempotent). Requires edit:recipes. Keys issued before that scope existed carry it wherever they carry edit:products. Every component must sit at a plant your key can reach — access to the instance does not extend to what its BOM points at. A by-product of its production process takes no components (err_product_type_no_recipe): its main products\u0026#x27; recipes cover its share.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://emidat.mintlify.app/_mintlify/api/og/v2?division=Product+Instances\u0026amp;title=Replace+BOM\u0026amp;description=Replaces+the+instance%27s+entire+BOM.+Re-sending+the+same+components+is+a+no-op+%28idempotent%29.%0A%0ARequires+%60edit%3Arecipes%60.+Keys+issued+before+that+scope+existed+carr\u0026amp;theme=df6acf5ffa3b5355e046b553\u0026amp;signature=bc9e965ccf29c8d3c92c925abec3243431362ed79c733269e7cb210ef67ddf52\">\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/emidat/vlF3Kpxi6ZOBtvHL/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Emidat API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2929CC\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.emidat.com/api-reference/product-instances/bom\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/product-instances/bom.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.emidat.com/#organization\",\"name\":\"Emidat API\",\"url\":\"https://docs.emidat.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/emidat/KhjEpdL-EUrz1H4P/logo/dark.svg?fit=max\u0026auto=format\u0026n=KhjEpdL-EUrz1H4P\u0026q=85\u0026s=35ce6850a5591a143fb8936475924122\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.emidat.com#website\",\"name\":\"Emidat API\",\"url\":\"https://docs.emidat.com\",\"publisher\":{\"@id\":\"https://docs.emidat.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.emidat.com/api-reference/product-instances/bom#webpage\",\"url\":\"https://docs.emidat.com/api-reference/product-instances/bom\",\"name\":\"Replace BOM\",\"description\":\"Replaces the instance's entire BOM. Re-sending the same components is a no-op (idempotent). Requires edit:recipes. Keys issued before that scope existed carry it wherever they carry edit:products. Every component must sit at a plant your key can reach — access to the instance does not extend to what its BOM points at. A by-product of its production process takes no components (err_product_type_no_recipe): its main products' recipes cover its share.\",\"dateModified\":\"2026-10-11T22:42:10.825Z\",\"isPartOf\":{\"@id\":\"https://docs.emidat.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.emidat.com/api-reference/product-instances/bom#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.emidat.com/api-reference/product-instances/bom#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Product Instances\",\"item\":\"https://docs.emidat.com/api-reference/product-instances/list\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Replace BOM\",\"item\":\"https://docs.emidat.com/api-reference/product-instances/bom\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.emidat.com/api-reference/product-instances/bom#apireference\",\"headline\":\"Replace BOM\",\"name\":\"Replace BOM\",\"description\":\"Replaces the instance's entire BOM. Re-sending the same components is a no-op (idempotent). Requires edit:recipes. Keys issued before that scope existed carry it wherever they carry edit:products. Every component must sit at a plant your key can reach — access to the instance does not extend to what its BOM points at. A by-product of its production process takes no components (err_product_type_no_recipe): its main products' recipes cover its share.\",\"url\":\"https://docs.emidat.com/api-reference/product-instances/bom\",\"mainEntityOfPage\":{\"@id\":\"https://docs.emidat.com/api-reference/product-instances/bom#webpage\"},\"dateModified\":\"2026-10-11T22:42:10.825Z\",\"publisher\":{\"@id\":\"https://docs.emidat.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.emidat.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Emidat API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Emidat API","nav":{"global":null,"groups":[{"group":"Get Started","pages":[{"title":"Introduction","href":"/introduction"},{"title":"Authentication","href":"/authentication"},{"title":"Errors","href":"/errors"},{"title":"External IDs","href":"/external-ids"},{"title":"Pagination","href":"/pagination"}]},{"group":"Guides","pages":[{"title":"Using AI Agents","href":"/using-ai-agents"}]},{"group":"API Key","pages":[{"title":"Introspect API key","openapi":"GET /v2/me","href":"/api-reference/me/get"}]},{"group":"Plants","pages":[{"title":"List plants","openapi":"GET /v2/plants","href":"/api-reference/plants/list"},{"title":"Get plant","openapi":"GET /v2/plants/{id}","href":"/api-reference/plants/get"}]},{"group":"Production Processes","pages":[{"title":"List production processes","openapi":"GET /v2/production-processes","href":"/api-reference/production-processes/list"},{"title":"Get production process","openapi":"GET /v2/production-processes/{id}","href":"/api-reference/production-processes/get"}]},{"group":"Products","pages":[{"title":"List products","openapi":"GET /v2/products","href":"/api-reference/products/list"},{"title":"Get product","openapi":"GET /v2/products/{id}","href":"/api-reference/products/get"}]},{"group":"Product Instances","pages":[{"title":"List product instances","openapi":"GET /v2/product-instances","tag":"Preview","href":"/api-reference/product-instances/list"},{"title":"Create product instance","openapi":"POST /v2/product-instances","tag":"Preview","href":"/api-reference/product-instances/create"},{"title":"Get product instance","openapi":"GET /v2/product-instances/{id}","tag":"Preview","href":"/api-reference/product-instances/get"},{"title":"Update product instance","openapi":"PUT /v2/product-instances/{id}","tag":"Preview","href":"/api-reference/product-instances/update"},{"title":"Delete product instance","openapi":"DELETE /v2/product-instances/{id}","tag":"Preview","href":"/api-reference/product-instances/delete"},{"title":"Get BOM","openapi":"GET /v2/product-instances/{id}/bom","tag":"Preview","description":"Returns the instance's current BOM — the full set of components last\nwritten.\n\nA recipe is confidential beyond the plant that makes it, so it has a\nscope of its own: `view:recipes`. Keys issued before that scope existed\ncarry it wherever they carry `view:products`, so nothing an integrator\nalready builds on changes.\n","href":"/api-reference/product-instances/get-bom"},{"title":"Replace BOM","openapi":"PUT /v2/product-instances/{id}/bom","tag":"Preview","href":"/api-reference/product-instances/bom"},{"title":"Recompute LCA","openapi":"POST /v2/product-instances/{id}/lca-update","tag":"Preview","description":"Queues a recompute of this instance's LCA, filling in any sub-assembly\nresults it consumes that are missing. Call once on the root after all\nwrites.\n\nThe recompute runs in the background: this returns immediately with the\njob's state. Poll `GET /v2/product-instances/{id}/lca-results` — it\ncarries the same `job` object and withholds results until the job\nleaves `queued`/`processing`.\n\nA `202` means the recompute is pending. If it could not be queued you\nget a `503` instead — never a `202` whose job never runs.\n","href":"/api-reference/product-instances/lca-update"},{"title":"Get LCA results","openapi":"GET /v2/product-instances/{id}/lca-results","tag":"Preview","href":"/api-reference/product-instances/lca-results"}]},{"group":"Prechain Products","pages":[{"title":"List prechain products","openapi":"GET /v2/prechain-products","tag":"Preview","href":"/api-reference/prechain-products/list"},{"title":"Create prechain product","openapi":"POST /v2/prechain-products","tag":"Preview","href":"/api-reference/prechain-products/create"},{"title":"Get prechain product","openapi":"GET /v2/prechain-products/{id}","tag":"Preview","href":"/api-reference/prechain-products/get"},{"title":"Update prechain product","openapi":"PUT /v2/prechain-products/{id}","tag":"Preview","href":"/api-reference/prechain-products/update"},{"title":"Delete prechain product","openapi":"DELETE /v2/prechain-products/{id}","tag":"Preview","href":"/api-reference/prechain-products/delete"}]},{"group":"Supplier Companies","pages":[{"title":"List supplier companies","openapi":"GET /v2/supplier-companies","href":"/api-reference/supplier-companies/list"},{"title":"Create supplier company","openapi":"POST /v2/supplier-companies","href":"/api-reference/supplier-companies/create"},{"title":"Get supplier company","openapi":"GET /v2/supplier-companies/{id}","href":"/api-reference/supplier-companies/get"},{"title":"Update supplier company","openapi":"PUT /v2/supplier-companies/{id}","href":"/api-reference/supplier-companies/update"},{"title":"Delete supplier company","openapi":"DELETE /v2/supplier-companies/{id}","href":"/api-reference/supplier-companies/delete"}]},{"group":"Supplier Plants","pages":[{"title":"List supplier plants","openapi":"GET /v2/supplier-plants","href":"/api-reference/supplier-plants/list"},{"title":"Create supplier plant","openapi":"POST /v2/supplier-plants","href":"/api-reference/supplier-plants/create"},{"title":"Get supplier plant","openapi":"GET /v2/supplier-plants/{id}","href":"/api-reference/supplier-plants/get"},{"title":"Update supplier plant","openapi":"PUT /v2/supplier-plants/{id}","href":"/api-reference/supplier-plants/update"},{"title":"Delete supplier plant","openapi":"DELETE /v2/supplier-plants/{id}","href":"/api-reference/supplier-plants/delete"}]},{"group":"Supplier Products","pages":[{"title":"List supplier products","openapi":"GET /v2/supplier-products","href":"/api-reference/supplier-products/list"},{"title":"Create supplier product","openapi":"POST /v2/supplier-products","href":"/api-reference/supplier-products/create"},{"title":"Get supplier product","openapi":"GET /v2/supplier-products/{id}","href":"/api-reference/supplier-products/get"},{"title":"Update supplier product","openapi":"PUT /v2/supplier-products/{id}","href":"/api-reference/supplier-products/update"},{"title":"Delete supplier product","openapi":"DELETE /v2/supplier-products/{id}","href":"/api-reference/supplier-products/delete"}]},{"group":"Silos","pages":[{"title":"List silos","openapi":"GET /v2/silos","href":"/api-reference/silos/list"},{"title":"Create silo","openapi":"POST /v2/silos","href":"/api-reference/silos/create"},{"title":"Get silo","openapi":"GET /v2/silos/{id}","href":"/api-reference/silos/get"},{"title":"Update silo","openapi":"PUT /v2/silos/{id}","href":"/api-reference/silos/update"},{"title":"Delete silo","openapi":"DELETE /v2/silos/{id}","href":"/api-reference/silos/delete"}]},{"group":"Composites","pages":[{"title":"List composites","openapi":"GET /v2/composites","href":"/api-reference/composites/list"},{"title":"Create composite","openapi":"POST /v2/composites","href":"/api-reference/composites/create"},{"title":"Get composite","openapi":"GET /v2/composites/{id}","href":"/api-reference/composites/get"},{"title":"Update composite","openapi":"PUT /v2/composites/{id}","href":"/api-reference/composites/update"},{"title":"Delete composite","openapi":"DELETE /v2/composites/{id}","href":"/api-reference/composites/delete"}]}]},"title":"Replace BOM - Emidat API","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","Page-CBCH2P7b.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}