Updates your nutrition for a product component. Only the fields you supply are
changed.
The component’s name cannot be changed — the name row is shared with every
other account that registered the same ingredient. Use clear to reset a value
to “not supplied”; omitting a field means “leave unchanged”, so omission cannot
express erasure.
metadata is the one field that merges rather than replaces: the keys you send
are added or overwritten and the rest are left alone, so removing a key means
clear: ["metadata"]. Moving a client_reference_id onto this component when
another of your components in this mode already carries that value returns
409.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Flex Documentation","colors":{"primary":"#0070FA","light":"#BAB3FF","dark":"#0B0077"},"logo":{"light":"https://mintcdn.com/flex-87/1kILreF5HcjIKLdi/logo/light.svg?fit=max\u0026auto=format\u0026n=1kILreF5HcjIKLdi\u0026q=85\u0026s=f703a75bc80df014f4849a7225b4879f","dark":"https://mintcdn.com/flex-87/1kILreF5HcjIKLdi/logo/dark.svg?fit=max\u0026auto=format\u0026n=1kILreF5HcjIKLdi\u0026q=85\u0026s=1aabf14d790c002d1740276fdbced9ab"},"favicon":"https://mintcdn.com/flex-87/liG_HQMgKKwndFp8/favicon.svg?fit=max\u0026auto=format\u0026n=liG_HQMgKKwndFp8\u0026q=85\u0026s=82a2993b4fffbf19268067f48e898bed","navbar":{"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.withflex.com/"}},"footer":{"socials":{"github":"https://github.com/JoinFlexHealth","linkedin":"https://www.linkedin.com/company/withflex","x":"https://x.com/paywithflex","instagram":"https://www.instagram.com/paywithflex"}},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","latex":true},"navigation":{"global":{"anchors":[{"anchor":"Status","icon":"wifi","href":"https://statuspage.incident.io/with-flex"},{"anchor":"Support","icon":"mail","href":"mailto:support@withflex.com"},{"anchor":"Website","icon":"laptop","href":"https://www.withflex.com"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"flex-87","hasAudioNarration":false,"actualSubdomain":"flex-87","customDomains":["docs.withflex.com"],"gitSource":{"type":"github","owner":"joinflexhealth","repo":"flex","deployBranch":"main","contentDirectory":"flex-docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aee6975cd3f5bf5212d16fd","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"API Reference","count":188},{"language":"default","tag":"Guides","count":51},{"language":"default","tag":"Integration","count":29},{"language":"default","tag":"Marketing","count":21},{"language":"default","tag":"Checkout Sessions","count":13},{"language":"default","tag":"Subscriptions","count":12},{"language":"default","tag":"Products","count":9},{"language":"default","tag":"Disputes","count":8},{"language":"default","tag":"Shopify","count":7},{"language":"default","tag":"Overview","count":7}]},"assistantConfig":{},"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":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#topbar-cta-button span.bg-primary-dark{background-color:#0B0077!important}html.dark #topbar-cta-button span.bg-primary-dark{background-color:#BAB3FF1A!important;border-color:#BAB3FF;border-width:1px}main img,article img,.content img,[data-content] img{border:1px solid #E8EAED!important}main img.rounded,article img.rounded,.content img.rounded,[data-content] img.rounded{border:.5px solid #E8EAED!important}.nav-logo,img.nav-logo{border:none!important}.brand-logo-grid img{border:none!important}.doc-screenshot img{border:none!important}img.no-border{border:none!important}.nav-anchor:hover .mr-4.rounded-md.p-1.shadow-sm{background:rgba(17, 24, 39, 0.05)!important;background-color:rgba(17, 24, 39, 0.05)!important;color:#1f2937!important;--tw-ring-opacity: 1 !important;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color) !important;--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color) !important;box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;filter:none!important}.dark .nav-anchor:hover .mr-4.rounded-md.p-1.shadow-sm{background:rgba(229, 231, 235, 0.05)!important;background-color:rgba(229, 231, 235, 0.05)!important;color:#d1d5db!important;--tw-ring-opacity: 1 !important;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color) !important;--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color) !important;box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;filter:none!important}.group:hover .group-hover\\:ring-0{--tw-ring-opacity: 1 !important;--tw-ring-color: rgba(17, 24, 39, 0.05) !important}.dark .group:hover .group-hover\\:ring-0{--tw-ring-opacity: 1 !important;--tw-ring-color: rgba(55, 65, 81, 0.4) !important}.nav-anchor:hover .secondary-opacity.group-hover\\:fill-primary-dark.group-hover\\:bg-white{background-color:currentColor!important;fill:none!important}.nav-anchor:hover .secondary-opacity{background-color:#1f2937!important}.dark .nav-anchor:hover .secondary-opacity{background-color:#d1d5db!important}.nav-anchor .mr-4.rounded-md.p-1.shadow-sm[style*=\"background\"]{background:inherit!important;background-color:inherit!important}.nav-anchor:hover .mr-4.rounded-md.p-1.shadow-sm[style*=\"background\"]{background:rgba(17, 24, 39, 0.05)!important;background-color:rgba(17, 24, 39, 0.05)!important}.dark .nav-anchor:hover .mr-4.rounded-md.p-1.shadow-sm[style*=\"background\"]{background:rgba(229, 231, 235, 0.05)!important;background-color:rgba(229, 231, 235, 0.05)!important}.nav-anchor:hover .h-4.w-4.secondary-opacity{background-color:currentColor!important}.inline-flex.items-center.gap-1\\.5.text-sm.text-gray-500 a{color:#0070FA!important}.inline-flex.items-center.gap-1\\.5.text-sm.text-gray-500 a:hover{color:#0B0077!important}html.dark .inline-flex.items-center.gap-1\\.5.text-sm a{color:#BAB3FF!important}html.dark .inline-flex.items-center.gap-1\\.5.text-sm a:hover{color:white!important}.lucide.lucide-chevron-right{stroke:#0070FA!important}html.dark .lucide.lucide-chevron-right{stroke:#BAB3FF!important}"}],"page":{"pagePath":"api-reference/products/update-product-component","slug":"/api-reference/products/update-product-component","pageMetadata":{"title":"Update Product Component","description":"Updates your nutrition for a product component. Only the fields you supply are\nchanged.\n\nThe component's `name` cannot be changed — the name row is shared with every\nother account that registered the same ingredient. Use `clear` to reset a value\nto \"not supplied\"; omitting a field means \"leave unchanged\", so omission cannot\nexpress erasure.\n\n`metadata` is the one field that merges rather than replaces: the keys you send\nare added or overwritten and the rest are left alone, so removing a key means\n`clear: [\"metadata\"]`. Moving a `client_reference_id` onto this component when\nanother of your components in this mode already carries that value returns\n`409`.","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/product_components/{id}","href":"/api-reference/products/update-product-component","autogeneratedByOpenApi":true},"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: \"Updates your nutrition for a product component. Only the fields you supply are\\nchanged.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The component’s \", _jsx(_components.code, {\n children: \"name\"\n }), \" cannot be changed — the name row is shared with every\\nother account that registered the same ingredient. Use \", _jsx(_components.code, {\n children: \"clear\"\n }), \" to reset a value\\nto “not supplied”; omitting a field means “leave unchanged”, so omission cannot\\nexpress erasure.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"metadata\"\n }), \" is the one field that merges rather than replaces: the keys you send\\nare added or overwritten and the rest are left alone, so removing a key means\\n\", _jsx(_components.code, {\n children: \"clear: [\\\"metadata\\\"]\"\n }), \". Moving a \", _jsx(_components.code, {\n children: \"client_reference_id\"\n }), \" onto this component when\\nanother of your components in this mode already carries that value returns\\n\", _jsx(_components.code, {\n children: \"409\"\n }), \".\"]\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":{"config":{},"pageMetadata":{"title":"Update Product Component","description":"Updates your nutrition for a product component. Only the fields you supply are\nchanged.\n\nThe component's `name` cannot be changed — the name row is shared with every\nother account that registered the same ingredient. Use `clear` to reset a value\nto \"not supplied\"; omitting a field means \"leave unchanged\", so omission cannot\nexpress erasure.\n\n`metadata` is the one field that merges rather than replaces: the keys you send\nare added or overwritten and the rest are left alone, so removing a key means\n`clear: [\"metadata\"]`. Moving a `client_reference_id` onto this component when\nanother of your components in this mode already carries that value returns\n`409`.","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/product_components/{id}","href":"/api-reference/products/update-product-component","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/flex-87/f0156321fafa1974/postcss.config.js"],"openApiReferenceData":{"operation":{"tags":["Products"],"summary":"Update Product Component","description":"Updates your nutrition for a product component. Only the fields you supply are\nchanged.\n\nThe component's `name` cannot be changed — the name row is shared with every\nother account that registered the same ingredient. Use `clear` to reset a value\nto \"not supplied\"; omitting a field means \"leave unchanged\", so omission cannot\nexpress erasure.\n\n`metadata` is the one field that merges rather than replaces: the keys you send\nare added or overwritten and the rest are left alone, so removing a key means\n`clear: [\"metadata\"]`. Moving a `client_reference_id` onto this component when\nanother of your components in this mode already carries that value returns\n`409`.","operationId":"v1.product_components.update","parameters":["ee4199b5-d5ab-4103-aaf6-a7808a5b1444"],"requestBody":"aba28065-b5d4-4209-940a-9cac2974334e","responses":{"200":"98619f97-3b8c-447a-adfd-b03e622ad79b","401":"9245b4e5-2f20-4f59-b5e0-6fa9cf1b9e59","403":"c76bfa3c-ca4e-4923-9ecb-e43b19136b79","404":"8e972c47-a5b9-4572-808a-b321996fbea0","409":"84ffd593-db1d-4964-880e-6e2d9ddb9f7d","422":"590a4f28-0789-4111-9820-1d961d4a40bb","429":"a4341e23-917e-482b-9a4f-facfc40b6bb6"},"security":["7b826cf3-bf13-40dd-bb08-44b7835a8472"],"method":"patch","type":"path","servers":["080577c1-39a5-4498-bb49-d7daab803f21"],"path":"/v1/product_components/{id}","baseUrlOptions":["https://api.withflex.com"],"title":"Update Product Component","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"ee4199b5-d5ab-4103-aaf6-a7808a5b1444":{"in":"path","name":"id","description":"The component's `fcomp_` identifier.","required":true,"schema":{"description":"The component's `fcomp_` identifier.","examples":["fcomp_01J9XR8M3K7VZ8N2YB4WJ6T0RA"],"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"},"style":"simple","example":"fcomp_01J9XR8M3K7VZ8N2YB4WJ6T0RA"}},"requestBody":{"description":"An envelope wrapping a single product component object.","content":{"application/json":{"schema":{"description":"An envelope wrapping a single product component object.","type":"object","required":["product_component"],"properties":{"product_component":{"description":"The product component object.","type":"object","properties":{"category":{"oneOf":[{"type":"string","description":"The component's menu category.","enum":["base","protein","topping","premium","dressing"],"x-ms-enum":{"name":"ComponentCategory","modelAsString":false,"values":[{"value":"base","name":"Base","description":"The bowl's base — a grain, green or other foundation."},{"value":"protein","name":"Protein","description":"A protein."},{"value":"topping","name":"Topping","description":"A standard topping."},{"value":"premium","name":"Premium","description":"A premium topping."},{"value":"dressing","name":"Dressing","description":"A dressing. The one category the eligibility engine gates differently."}]},"example":"base","uniqueKey":"product_component.category.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"The component's menu category.","uniqueKey":"product_component.category.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.category","typeLabel":"enum\u003cstring> | null"},"nutrition_basis":{"oneOf":[{"type":"string","description":"The basis the supplied `nutrition` values are expressed on. Defaults to `per_100g`. `as_served` converts by `serving_size_g` — the one in this request if present, otherwise the stored one.","enum":["per_100g","as_served"],"x-ms-enum":{"name":"NutritionBasis","modelAsString":false,"values":[{"value":"per_100g","name":"Per100g","description":"The values are already per 100 g. The default."},{"value":"as_served","name":"AsServed","description":"The values describe one `serving_size_g` portion as served, and are converted to per 100 g before being stored."}]},"example":"per_100g","uniqueKey":"product_component.nutrition_basis.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"The basis the supplied `nutrition` values are expressed on. Defaults to `per_100g`. `as_served` converts by `serving_size_g` — the one in this request if present, otherwise the stored one.","uniqueKey":"product_component.nutrition_basis.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition_basis","typeLabel":"enum\u003cstring> | null"},"serving_size_g":{"oneOf":[{"description":"The standard portion of this component, in grams.","type":"number","format":"double","uniqueKey":"product_component.serving_size_g.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"The standard portion of this component, in grams.","type":"null","format":"double","uniqueKey":"product_component.serving_size_g.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.serving_size_g","typeLabel":"number\u003cdouble> | null"},"nutrition":{"oneOf":[{"type":"object","description":"Nutrient values to change. Omitted nutrients are left unchanged.","example":{"calories":0,"total_fat_g":0,"saturated_fat_g":0,"trans_fat_g":0,"carbohydrate_g":0,"fiber_g":0,"protein_g":0,"sodium_mg":0,"added_sugar_g":0},"properties":{"calories":{"oneOf":[{"description":"Energy, kcal per 100 g.","type":"number","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.calories.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Energy, kcal per 100 g.","type":"null","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.calories.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.oneOf.0.calories","typeLabel":"number\u003cdouble> | null"},"total_fat_g":{"oneOf":[{"description":"Total fat, g per 100 g. Informational — the eligibility gate uses saturated fat.","type":"number","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.total_fat_g.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Total fat, g per 100 g. Informational — the eligibility gate uses saturated fat.","type":"null","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.total_fat_g.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.oneOf.0.total_fat_g","typeLabel":"number\u003cdouble> | null"},"saturated_fat_g":{"oneOf":[{"description":"Saturated fat, g per 100 g. This is the fat the eligibility gate uses.","type":"number","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.saturated_fat_g.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Saturated fat, g per 100 g. This is the fat the eligibility gate uses.","type":"null","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.saturated_fat_g.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.oneOf.0.saturated_fat_g","typeLabel":"number\u003cdouble> | null"},"trans_fat_g":{"oneOf":[{"description":"Trans fat, g per 100 g.","type":"number","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.trans_fat_g.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Trans fat, g per 100 g.","type":"null","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.trans_fat_g.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.oneOf.0.trans_fat_g","typeLabel":"number\u003cdouble> | null"},"carbohydrate_g":{"oneOf":[{"description":"Carbohydrate, g per 100 g.","type":"number","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.carbohydrate_g.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Carbohydrate, g per 100 g.","type":"null","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.carbohydrate_g.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.oneOf.0.carbohydrate_g","typeLabel":"number\u003cdouble> | null"},"fiber_g":{"oneOf":[{"description":"Fiber, g per 100 g.","type":"number","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.fiber_g.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Fiber, g per 100 g.","type":"null","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.fiber_g.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.oneOf.0.fiber_g","typeLabel":"number\u003cdouble> | null"},"protein_g":{"oneOf":[{"description":"Protein, g per 100 g.","type":"number","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.protein_g.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Protein, g per 100 g.","type":"null","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.protein_g.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.oneOf.0.protein_g","typeLabel":"number\u003cdouble> | null"},"sodium_mg":{"oneOf":[{"description":"Sodium, mg per 100 g.","type":"number","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.sodium_mg.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Sodium, mg per 100 g.","type":"null","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.sodium_mg.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.oneOf.0.sodium_mg","typeLabel":"number\u003cdouble> | null"},"added_sugar_g":{"oneOf":[{"description":"Added sugar, g per 100 g.","type":"number","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.added_sugar_g.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Added sugar, g per 100 g.","type":"null","format":"double","uniqueKey":"product_component.nutrition.oneOf.0.added_sugar_g.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.oneOf.0.added_sugar_g","typeLabel":"number\u003cdouble> | null"}},"uniqueKey":"product_component.nutrition.oneOf.0","typeLabel":"object"},{"type":"null","description":"Nutrient values to change. Omitted nutrients are left unchanged.","uniqueKey":"product_component.nutrition.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition","typeLabel":"object | null"},"vegan":{"oneOf":[{"description":"Whether the component is vegan.","type":"boolean","uniqueKey":"product_component.vegan.oneOf.0","typeLabel":"boolean"},{"description":"Whether the component is vegan.","type":"null","uniqueKey":"product_component.vegan.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.vegan","typeLabel":"boolean | null"},"gluten_free":{"oneOf":[{"description":"Whether the component is gluten-free.","type":"boolean","uniqueKey":"product_component.gluten_free.oneOf.0","typeLabel":"boolean"},{"description":"Whether the component is gluten-free.","type":"null","uniqueKey":"product_component.gluten_free.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.gluten_free","typeLabel":"boolean | null"},"canonical_food_key":{"oneOf":[{"description":"The join key into Flex's national price book. Normalized the same way as on create: lowercased, trimmed, hyphens folded into underscores.","type":"string","uniqueKey":"product_component.canonical_food_key.oneOf.0","typeLabel":"string"},{"description":"The join key into Flex's national price book. Normalized the same way as on create: lowercased, trimmed, hyphens folded into underscores.","type":"null","uniqueKey":"product_component.canonical_food_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.canonical_food_key","typeLabel":"string | null"},"client_reference_id":{"oneOf":[{"description":"Your own identifier for this ingredient. Still unique within your account and mode, so moving one onto a component that would collide with another of yours is a `409`.","type":"string","example":"example_value","uniqueKey":"product_component.client_reference_id.oneOf.0","typeLabel":"string"},{"description":"Your own identifier for this ingredient. Still unique within your account and mode, so moving one onto a component that would collide with another of yours is a `409`.","type":"null","example":"example_value","uniqueKey":"product_component.client_reference_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.client_reference_id","typeLabel":"string | null"},"metadata":{"oneOf":[{"description":"Key-value pairs to **merge** into the stored metadata: keys you send are added or overwritten, keys you omit are left alone. A merge cannot remove a key, so erasing the object means `clear: [\"metadata\"]`.","type":"object","additionalProperties":{"type":"string","uniqueKey":"product_component.metadata.oneOf.0.additionalProperties","typeLabel":"string"},"example":{"order_id":"8842","channel":"shopify"},"uniqueKey":"product_component.metadata.oneOf.0","typeLabel":"object"},{"description":"Key-value pairs to **merge** into the stored metadata: keys you send are added or overwritten, keys you omit are left alone. A merge cannot remove a key, so erasing the object means `clear: [\"metadata\"]`.","type":"null","additionalProperties":{"type":"string","uniqueKey":"product_component.metadata.oneOf.1.additionalProperties","typeLabel":"string"},"example":{"order_id":"8842","channel":"shopify"},"uniqueKey":"product_component.metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.metadata","typeLabel":"object | null"},"clear":{"oneOf":[{"description":"Fields to reset to \"not supplied\".","type":"array","items":{"oneOf":[{"type":"string","description":"A nullable field an update may reset to \"not supplied\".\n\n`category`, `vegan` and `gluten_free` are absent on purpose: they are never null in storage, so they can be changed but not cleared.","enum":["serving_size_g","calories","total_fat_g","saturated_fat_g","trans_fat_g","carbohydrate_g","fiber_g","protein_g","sodium_mg","added_sugar_g","canonical_food_key","client_reference_id"],"example":"serving_size_g","uniqueKey":"product_component.clear.oneOf.0.items.[INDEX].oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","description":"A nullable field an update may reset to \"not supplied\".\n\n`category`, `vegan` and `gluten_free` are absent on purpose: they are never null in storage, so they can be changed but not cleared.","enum":["metadata"],"example":"serving_size_g","uniqueKey":"product_component.clear.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"product_component.clear.oneOf.0.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"product_component.clear.oneOf.0","typeLabel":"enum\u003cstring>[]"},{"description":"Fields to reset to \"not supplied\".","type":"null","items":{"oneOf":[{"type":"string","description":"A nullable field an update may reset to \"not supplied\".\n\n`category`, `vegan` and `gluten_free` are absent on purpose: they are never null in storage, so they can be changed but not cleared.","enum":["serving_size_g","calories","total_fat_g","saturated_fat_g","trans_fat_g","carbohydrate_g","fiber_g","protein_g","sodium_mg","added_sugar_g","canonical_food_key","client_reference_id"],"example":"serving_size_g"},{"type":"string","description":"A nullable field an update may reset to \"not supplied\".\n\n`category`, `vegan` and `gluten_free` are absent on purpose: they are never null in storage, so they can be changed but not cleared.","enum":["metadata"],"example":"serving_size_g"}]},"uniqueKey":"product_component.clear.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.clear","typeLabel":"enum\u003cstring>[] | null"}},"example":{"category":"base","nutrition_basis":"per_100g","serving_size_g":0,"nutrition":{"calories":0,"total_fat_g":0,"saturated_fat_g":0,"trans_fat_g":0,"carbohydrate_g":0,"fiber_g":0,"protein_g":0,"sodium_mg":0,"added_sugar_g":0},"vegan":true,"gluten_free":true,"canonical_food_key":"string","client_reference_id":"example_value","metadata":{"order_id":"8842","channel":"shopify"},"clear":["serving_size_g"]},"isRequired":true,"uniqueKey":"product_component","typeLabel":"object"}},"example":{"product_component":{"category":"base","nutrition_basis":"per_100g","serving_size_g":0,"nutrition":{"calories":0,"total_fat_g":0,"saturated_fat_g":0,"trans_fat_g":0,"carbohydrate_g":0,"fiber_g":0,"protein_g":0,"sodium_mg":0,"added_sugar_g":0},"vegan":true,"gluten_free":true,"canonical_food_key":"string","client_reference_id":"example_value","metadata":{"order_id":"8842","channel":"shopify"},"clear":["serving_size_g"]}},"uniqueKey":"","typeLabel":"object"},"example":{"product_component":{"category":"base","nutrition_basis":"per_100g","serving_size_g":0,"nutrition":{"calories":0,"total_fat_g":0,"saturated_fat_g":0,"trans_fat_g":0,"carbohydrate_g":0,"fiber_g":0,"protein_g":0,"sodium_mg":0,"added_sugar_g":0},"vegan":true,"gluten_free":true,"canonical_food_key":"string","client_reference_id":"example_value","metadata":{"order_id":"8842","channel":"shopify"},"clear":["serving_size_g"]}},"examples":{"Example":{"title":"Example","value":{"product_component":{"category":"base","nutrition_basis":"per_100g","serving_size_g":0,"nutrition":{"calories":0,"total_fat_g":0,"saturated_fat_g":0,"trans_fat_g":0,"carbohydrate_g":0,"fiber_g":0,"protein_g":0,"sodium_mg":0,"added_sugar_g":0},"vegan":true,"gluten_free":true,"canonical_food_key":"string","client_reference_id":"example_value","metadata":{"order_id":"8842","channel":"shopify"},"clear":["serving_size_g"]}}}},"exampleType":"examples"}},"required":true,"exampleType":"examples"},"responses":{"98619f97-3b8c-447a-adfd-b03e622ad79b":{"description":"An envelope wrapping a single product component object.","content":{"application/json":{"schema":{"description":"An envelope wrapping a single product component object.","type":"object","required":["product_component"],"properties":{"product_component":{"description":"The product component object.","type":"object","required":["category","component_id","component_nutrition_id","created_at","gluten_free","name","nutrition","shared","test_mode","vegan"],"properties":{"component_id":{"description":"The component's unique identifier. This is the id `component_items` on `PATCH /v1/products/{id}` accepts.","type":"string","example":"fcomp_01J9XR8M3K7VZ8N2YB4WJ6T0RA","isRequired":true,"uniqueKey":"product_component.component_id","typeLabel":"string"},"component_nutrition_id":{"description":"The identifier of the nutrition record holding your figures for this component.","type":"string","example":"fcn_01J9XR8M3K7VZ8N2YB4WJ6T0RA","isRequired":true,"uniqueKey":"product_component.component_nutrition_id","typeLabel":"string"},"name":{"description":"The component's name, normalized to lowercase.","type":"string","isRequired":true,"uniqueKey":"product_component.name","typeLabel":"string"},"shared":{"description":"Whether the underlying name row is shared across partners rather than owned by you. `true` for everything registered through this endpoint today, which is why the name cannot be changed.","type":"boolean","isRequired":true,"uniqueKey":"product_component.shared","typeLabel":"boolean"},"test_mode":{"description":"Whether these figures belong to test mode.","type":"boolean","isRequired":true,"uniqueKey":"product_component.test_mode","typeLabel":"boolean"},"category":{"description":"The component's menu category.","type":"string","isRequired":true,"uniqueKey":"product_component.category","typeLabel":"string"},"nutrition":{"description":"Nutrient values, per 100 g.","type":"object","properties":{"calories":{"oneOf":[{"description":"Energy, kcal per 100 g.","type":"number","format":"double","uniqueKey":"product_component.nutrition.calories.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Energy, kcal per 100 g.","type":"null","format":"double","uniqueKey":"product_component.nutrition.calories.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.calories","typeLabel":"number\u003cdouble> | null"},"total_fat_g":{"oneOf":[{"description":"Total fat, g per 100 g. Informational — the eligibility gate uses saturated fat.","type":"number","format":"double","uniqueKey":"product_component.nutrition.total_fat_g.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Total fat, g per 100 g. Informational — the eligibility gate uses saturated fat.","type":"null","format":"double","uniqueKey":"product_component.nutrition.total_fat_g.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.total_fat_g","typeLabel":"number\u003cdouble> | null"},"saturated_fat_g":{"oneOf":[{"description":"Saturated fat, g per 100 g. This is the fat the eligibility gate uses.","type":"number","format":"double","uniqueKey":"product_component.nutrition.saturated_fat_g.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Saturated fat, g per 100 g. This is the fat the eligibility gate uses.","type":"null","format":"double","uniqueKey":"product_component.nutrition.saturated_fat_g.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.saturated_fat_g","typeLabel":"number\u003cdouble> | null"},"trans_fat_g":{"oneOf":[{"description":"Trans fat, g per 100 g.","type":"number","format":"double","uniqueKey":"product_component.nutrition.trans_fat_g.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Trans fat, g per 100 g.","type":"null","format":"double","uniqueKey":"product_component.nutrition.trans_fat_g.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.trans_fat_g","typeLabel":"number\u003cdouble> | null"},"carbohydrate_g":{"oneOf":[{"description":"Carbohydrate, g per 100 g.","type":"number","format":"double","uniqueKey":"product_component.nutrition.carbohydrate_g.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Carbohydrate, g per 100 g.","type":"null","format":"double","uniqueKey":"product_component.nutrition.carbohydrate_g.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.carbohydrate_g","typeLabel":"number\u003cdouble> | null"},"fiber_g":{"oneOf":[{"description":"Fiber, g per 100 g.","type":"number","format":"double","uniqueKey":"product_component.nutrition.fiber_g.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Fiber, g per 100 g.","type":"null","format":"double","uniqueKey":"product_component.nutrition.fiber_g.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.fiber_g","typeLabel":"number\u003cdouble> | null"},"protein_g":{"oneOf":[{"description":"Protein, g per 100 g.","type":"number","format":"double","uniqueKey":"product_component.nutrition.protein_g.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Protein, g per 100 g.","type":"null","format":"double","uniqueKey":"product_component.nutrition.protein_g.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.protein_g","typeLabel":"number\u003cdouble> | null"},"sodium_mg":{"oneOf":[{"description":"Sodium, mg per 100 g.","type":"number","format":"double","uniqueKey":"product_component.nutrition.sodium_mg.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Sodium, mg per 100 g.","type":"null","format":"double","uniqueKey":"product_component.nutrition.sodium_mg.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.sodium_mg","typeLabel":"number\u003cdouble> | null"},"added_sugar_g":{"oneOf":[{"description":"Added sugar, g per 100 g.","type":"number","format":"double","uniqueKey":"product_component.nutrition.added_sugar_g.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Added sugar, g per 100 g.","type":"null","format":"double","uniqueKey":"product_component.nutrition.added_sugar_g.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.nutrition.added_sugar_g","typeLabel":"number\u003cdouble> | null"}},"example":{"calories":0,"total_fat_g":0,"saturated_fat_g":0,"trans_fat_g":0,"carbohydrate_g":0,"fiber_g":0,"protein_g":0,"sodium_mg":0,"added_sugar_g":0},"isRequired":true,"uniqueKey":"product_component.nutrition","typeLabel":"object"},"vegan":{"description":"Whether the component is vegan.","type":"boolean","isRequired":true,"uniqueKey":"product_component.vegan","typeLabel":"boolean"},"gluten_free":{"description":"Whether the component is gluten-free.","type":"boolean","isRequired":true,"uniqueKey":"product_component.gluten_free","typeLabel":"boolean"},"created_at":{"description":"When these figures were first recorded.","type":"string","example":"string","isRequired":true,"uniqueKey":"product_component.created_at","typeLabel":"string"},"serving_size_g":{"oneOf":[{"description":"The standard portion, in grams. Not a per-100 g nutrient.","type":"number","format":"double","uniqueKey":"product_component.serving_size_g.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"The standard portion, in grams. Not a per-100 g nutrient.","type":"null","format":"double","uniqueKey":"product_component.serving_size_g.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.serving_size_g","typeLabel":"number\u003cdouble> | null"},"canonical_food_key":{"oneOf":[{"description":"The join key into Flex's national price book, or `null` if not yet mapped.","type":"string","uniqueKey":"product_component.canonical_food_key.oneOf.0","typeLabel":"string"},{"description":"The join key into Flex's national price book, or `null` if not yet mapped.","type":"null","uniqueKey":"product_component.canonical_food_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.canonical_food_key","typeLabel":"string | null"},"client_reference_id":{"oneOf":[{"description":"Your own identifier for this ingredient, or `null` if you did not set one.","type":"string","uniqueKey":"product_component.client_reference_id.oneOf.0","typeLabel":"string"},{"description":"Your own identifier for this ingredient, or `null` if you did not set one.","type":"null","uniqueKey":"product_component.client_reference_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.client_reference_id","typeLabel":"string | null"},"metadata":{"oneOf":[{"description":"The key-value pairs you stored on this component, or `null` if none.","type":"object","additionalProperties":{"type":"string","uniqueKey":"product_component.metadata.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"product_component.metadata.oneOf.0","typeLabel":"object"},{"description":"The key-value pairs you stored on this component, or `null` if none.","type":"null","additionalProperties":{"type":"string","uniqueKey":"product_component.metadata.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"product_component.metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.metadata","typeLabel":"object | null"},"updated_at":{"oneOf":[{"type":"string","description":"When these figures were last changed, or `null` if never.","example":"string","uniqueKey":"product_component.updated_at.oneOf.0","typeLabel":"string"},{"type":"null","description":"When these figures were last changed, or `null` if never.","uniqueKey":"product_component.updated_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"product_component.updated_at","typeLabel":"string | null"}},"example":{"component_id":"fcomp_01J9XR8M3K7VZ8N2YB4WJ6T0RA","component_nutrition_id":"fcn_01J9XR8M3K7VZ8N2YB4WJ6T0RA","name":"string","shared":true,"test_mode":true,"category":"string","serving_size_g":0,"nutrition":{"calories":0,"total_fat_g":0,"saturated_fat_g":0,"trans_fat_g":0,"carbohydrate_g":0,"fiber_g":0,"protein_g":0,"sodium_mg":0,"added_sugar_g":0},"vegan":true,"gluten_free":true,"canonical_food_key":"string","client_reference_id":"string","metadata":{},"created_at":"string","updated_at":"string"},"isRequired":true,"uniqueKey":"product_component","typeLabel":"object"}},"example":{"product_component":{"component_id":"fcomp_01J9XR8M3K7VZ8N2YB4WJ6T0RA","component_nutrition_id":"fcn_01J9XR8M3K7VZ8N2YB4WJ6T0RA","name":"string","shared":true,"test_mode":true,"category":"string","serving_size_g":0,"nutrition":{"calories":0,"total_fat_g":0,"saturated_fat_g":0,"trans_fat_g":0,"carbohydrate_g":0,"fiber_g":0,"protein_g":0,"sodium_mg":0,"added_sugar_g":0},"vegan":true,"gluten_free":true,"canonical_food_key":"string","client_reference_id":"string","metadata":{},"created_at":"string","updated_at":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"product_component":{"component_id":"fcomp_01J9XR8M3K7VZ8N2YB4WJ6T0RA","component_nutrition_id":"fcn_01J9XR8M3K7VZ8N2YB4WJ6T0RA","name":"string","shared":true,"test_mode":true,"category":"string","serving_size_g":0,"nutrition":{"calories":0,"total_fat_g":0,"saturated_fat_g":0,"trans_fat_g":0,"carbohydrate_g":0,"fiber_g":0,"protein_g":0,"sodium_mg":0,"added_sugar_g":0},"vegan":true,"gluten_free":true,"canonical_food_key":"string","client_reference_id":"string","metadata":{},"created_at":"string","updated_at":"string"}},"examples":{"Example":{"title":"Example","value":{"product_component":{"component_id":"fcomp_01J9XR8M3K7VZ8N2YB4WJ6T0RA","component_nutrition_id":"fcn_01J9XR8M3K7VZ8N2YB4WJ6T0RA","name":"string","shared":true,"test_mode":true,"category":"string","serving_size_g":0,"nutrition":{"calories":0,"total_fat_g":0,"saturated_fat_g":0,"trans_fat_g":0,"carbohydrate_g":0,"fiber_g":0,"protein_g":0,"sodium_mg":0,"added_sugar_g":0},"vegan":true,"gluten_free":true,"canonical_food_key":"string","client_reference_id":"string","metadata":{},"created_at":"string","updated_at":"string"}}}},"exampleType":"examples"}},"exampleType":"examples"},"9245b4e5-2f20-4f59-b5e0-6fa9cf1b9e59":{"description":"Unauthorized","content":{"application/json":{"schema":{"title":"HttpError","description":"The error response returned when a request cannot be completed.","type":"object","required":["code","detail"],"properties":{"code":{"description":"A short machine-readable error code identifying the type of error.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"description":"A human-readable explanation of what went wrong.","type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"}},"example":{"code":"string","detail":"string"},"uniqueKey":"","typeLabel":"HttpError · object"},"example":{"code":"string","detail":"string"},"examples":{"Example":{"title":"Example","value":{"code":"string","detail":"string"}}},"exampleType":"examples"}},"exampleType":"examples"},"c76bfa3c-ca4e-4923-9ecb-e43b19136b79":{"description":"Forbidden","content":{"application/json":{"schema":{"title":"HttpError","description":"The error response returned when a request cannot be completed.","type":"object","required":["code","detail"],"properties":{"code":{"description":"A short machine-readable error code identifying the type of error.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"description":"A human-readable explanation of what went wrong.","type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"}},"example":{"code":"string","detail":"string"},"uniqueKey":"","typeLabel":"HttpError · object"},"example":{"code":"string","detail":"string"},"examples":{"Example":{"title":"Example","value":{"code":"string","detail":"string"}}},"exampleType":"examples"}},"exampleType":"examples"},"8e972c47-a5b9-4572-808a-b321996fbea0":{"description":"Not Found","content":{"application/json":{"schema":{"title":"HttpError","description":"The error response returned when a request cannot be completed.","type":"object","required":["code","detail"],"properties":{"code":{"description":"A short machine-readable error code identifying the type of error.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"description":"A human-readable explanation of what went wrong.","type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"}},"example":{"code":"string","detail":"string"},"uniqueKey":"","typeLabel":"HttpError · object"},"example":{"code":"string","detail":"string"},"examples":{"Example":{"title":"Example","value":{"code":"string","detail":"string"}}},"exampleType":"examples"}},"exampleType":"examples"},"84ffd593-db1d-4964-880e-6e2d9ddb9f7d":{"description":"Conflict","content":{"application/json":{"schema":{"title":"HttpError","description":"The error response returned when a request cannot be completed.","type":"object","required":["code","detail"],"properties":{"code":{"description":"A short machine-readable error code identifying the type of error.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"description":"A human-readable explanation of what went wrong.","type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"}},"example":{"code":"string","detail":"string"},"uniqueKey":"","typeLabel":"HttpError · object"},"example":{"code":"string","detail":"string"},"examples":{"Example":{"title":"Example","value":{"code":"string","detail":"string"}}},"exampleType":"examples"}},"exampleType":"examples"},"590a4f28-0789-4111-9820-1d961d4a40bb":{"description":"Validation Error","content":{"application/json":{"schema":{"description":"The error response returned when request validation fails (HTTP 422).","type":"object","required":["detail"],"properties":{"detail":{"description":"The list of validation errors, one entry per invalid field.","type":"array","items":{"description":"Validation errors have their own schema to provide context for invalid requests eg. mismatched types and out of bounds values. There may be any number of these per 422 UNPROCESSABLE ENTITY error.","type":"object","required":["loc","msg","type"],"properties":{"loc":{"description":"The location as a [`Vec`] of [`String`]s -- often in the form `[\"body\", \"field_name\"]`, `[\"query\", \"field_name\"]`, etc. They may, however, be arbitarily deep.","type":"array","items":{"type":"string","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"detail.items.[INDEX].loc","typeLabel":"string[]"},"msg":{"description":"The message accompanying the validation error item.","type":"string","isRequired":true,"uniqueKey":"detail.items.[INDEX].msg","typeLabel":"string"},"type":{"description":"The type of error, often \"type_error\" or \"value_error\", but sometimes with more context like as \"value_error.number.not_ge\"","type":"string","isRequired":true,"uniqueKey":"detail.items.[INDEX].type","typeLabel":"string"}},"example":{"loc":["string"],"msg":"string","type":"string"},"uniqueKey":"detail.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"detail","typeLabel":"object[]"}},"example":{"detail":[{"loc":["string"],"msg":"string","type":"string"}]},"uniqueKey":"","typeLabel":"object"},"example":{"detail":[{"loc":["string"],"msg":"string","type":"string"}]},"examples":{"Example":{"title":"Example","value":{"detail":[{"loc":["string"],"msg":"string","type":"string"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"a4341e23-917e-482b-9a4f-facfc40b6bb6":{"description":"Too Many Requests","content":{"application/json":{"schema":{"title":"HttpError","description":"The error response returned when a request cannot be completed.","type":"object","required":["code","detail"],"properties":{"code":{"description":"A short machine-readable error code identifying the type of error.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"description":"A human-readable explanation of what went wrong.","type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"}},"example":{"code":"string","detail":"string"},"uniqueKey":"","typeLabel":"HttpError · object"},"example":{"code":"string","detail":"string"},"examples":{"Example":{"title":"Example","value":{"code":"string","detail":"string"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"7b826cf3-bf13-40dd-bb08-44b7835a8472":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"Use a Bearer token to access this API.","scopes":["products:write"],"schemeName":"BearerAuth"}}},"servers":{"080577c1-39a5-4498-bb49-d7daab803f21":{"url":"https://api.withflex.com"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"Use a Bearer token to access this API.","scopes":["products:write"],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Use a Bearer token to access this API.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"flex-87","siteName":"Flex Documentation","title":"Update Product Component - Flex Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T22:54:20.447Z","originalFileLocation":"api-reference/products/update-product-component.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Updates your nutrition for a product component. Only the fields you supply are changed. The component\u0026#x27;s name cannot be changed — the name row is shared with every other account that registered the same ingredient. Use clear to reset a value to \u0026quot;not supplied\u0026quot;; omitting a field means \u0026quot;leave unchanged\u0026quot;, so omission cannot express erasure. metadata is the one field that merges rather than replaces: the keys you send are added or overwritten and the rest are left alone, so removing a key means clear: [\u0026quot;metadata\u0026quot;]. Moving a client_reference_id onto this component when another of your components in this mode already carries that value returns 409.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Flex Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/flex-87/uZDAr5goax7LGN2W/_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/flex-87/uZDAr5goax7LGN2W/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/flex-87/uZDAr5goax7LGN2W/_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/flex-87/uZDAr5goax7LGN2W/_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/flex-87/uZDAr5goax7LGN2W/_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/flex-87/uZDAr5goax7LGN2W/_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/flex-87/uZDAr5goax7LGN2W/_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/flex-87/uZDAr5goax7LGN2W/_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/flex-87/uZDAr5goax7LGN2W/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update Product Component - Flex Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Updates your nutrition for a product component. Only the fields you supply are changed. The component\u0026#x27;s name cannot be changed — the name row is shared with every other account that registered the same ingredient. Use clear to reset a value to \u0026quot;not supplied\u0026quot;; omitting a field means \u0026quot;leave unchanged\u0026quot;, so omission cannot express erasure. metadata is the one field that merges rather than replaces: the keys you send are added or overwritten and the rest are left alone, so removing a key means clear: [\u0026quot;metadata\u0026quot;]. Moving a client_reference_id onto this component when another of your components in this mode already carries that value returns 409.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Flex Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.withflex.com/api-reference/products/update-product-component\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://flex-87.mintlify.site/_mintlify/api/og/v2?division=Products\u0026amp;title=Update+Product+Component\u0026amp;description=Updates+your+nutrition+for+a+product+component.+Only+the+fields+you+supply+are%0Achanged.%0A%0AThe+component%27s+%60name%60+cannot+be+changed+%E2%80%94+the+name+row+is+shared+with+\u0026amp;theme=166c4e73f0167deeef40f76e\u0026amp;signature=21f91895906b666891a6408c9fcfadb52c63a568c9be088c3bffff1d4ef874d5\">\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=\"Update Product Component - Flex Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Updates your nutrition for a product component. Only the fields you supply are changed. The component\u0026#x27;s name cannot be changed — the name row is shared with every other account that registered the same ingredient. Use clear to reset a value to \u0026quot;not supplied\u0026quot;; omitting a field means \u0026quot;leave unchanged\u0026quot;, so omission cannot express erasure. metadata is the one field that merges rather than replaces: the keys you send are added or overwritten and the rest are left alone, so removing a key means clear: [\u0026quot;metadata\u0026quot;]. Moving a client_reference_id onto this component when another of your components in this mode already carries that value returns 409.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://flex-87.mintlify.site/_mintlify/api/og/v2?division=Products\u0026amp;title=Update+Product+Component\u0026amp;description=Updates+your+nutrition+for+a+product+component.+Only+the+fields+you+supply+are%0Achanged.%0A%0AThe+component%27s+%60name%60+cannot+be+changed+%E2%80%94+the+name+row+is+shared+with+\u0026amp;theme=166c4e73f0167deeef40f76e\u0026amp;signature=21f91895906b666891a6408c9fcfadb52c63a568c9be088c3bffff1d4ef874d5\">\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/flex-87/uZDAr5goax7LGN2W/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Flex Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0070FA\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.withflex.com/api-reference/products/update-product-component\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/products/update-product-component.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.withflex.com/#organization\",\"name\":\"Flex Documentation\",\"url\":\"https://docs.withflex.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/flex-87/1kILreF5HcjIKLdi/logo/light.svg?fit=max\u0026auto=format\u0026n=1kILreF5HcjIKLdi\u0026q=85\u0026s=f703a75bc80df014f4849a7225b4879f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.withflex.com#website\",\"name\":\"Flex Documentation\",\"url\":\"https://docs.withflex.com\",\"publisher\":{\"@id\":\"https://docs.withflex.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.withflex.com/api-reference/products/update-product-component#webpage\",\"url\":\"https://docs.withflex.com/api-reference/products/update-product-component\",\"name\":\"Update Product Component\",\"description\":\"Updates your nutrition for a product component. Only the fields you supply are changed. The component's name cannot be changed — the name row is shared with every other account that registered the same ingredient. Use clear to reset a value to \\\"not supplied\\\"; omitting a field means \\\"leave unchanged\\\", so omission cannot express erasure. metadata is the one field that merges rather than replaces: the keys you send are added or overwritten and the rest are left alone, so removing a key means clear: [\\\"metadata\\\"]. Moving a client_reference_id onto this component when another of your components in this mode already carries that value returns 409.\",\"dateModified\":\"2026-10-28T22:54:20.447Z\",\"isPartOf\":{\"@id\":\"https://docs.withflex.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.withflex.com/api-reference/products/update-product-component#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.withflex.com/api-reference/products/update-product-component#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.withflex.com/api-reference/shipping-rates/list-shipping-rates\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Products\",\"item\":\"https://docs.withflex.com/api-reference/products/list-product-components\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Update Product Component\",\"item\":\"https://docs.withflex.com/api-reference/products/update-product-component\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.withflex.com/api-reference/products/update-product-component#apireference\",\"headline\":\"Update Product Component\",\"name\":\"Update Product Component\",\"description\":\"Updates your nutrition for a product component. Only the fields you supply are changed. The component's name cannot be changed — the name row is shared with every other account that registered the same ingredient. Use clear to reset a value to \\\"not supplied\\\"; omitting a field means \\\"leave unchanged\\\", so omission cannot express erasure. metadata is the one field that merges rather than replaces: the keys you send are added or overwritten and the rest are left alone, so removing a key means clear: [\\\"metadata\\\"]. Moving a client_reference_id onto this component when another of your components in this mode already carries that value returns 409.\",\"url\":\"https://docs.withflex.com/api-reference/products/update-product-component\",\"mainEntityOfPage\":{\"@id\":\"https://docs.withflex.com/api-reference/products/update-product-component#webpage\"},\"dateModified\":\"2026-10-28T22:54:20.447Z\",\"publisher\":{\"@id\":\"https://docs.withflex.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.withflex.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Flex Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Flex Documentation","nav":{"global":{"anchors":[{"anchor":"Status","icon":"wifi","href":"https://statuspage.incident.io/with-flex"},{"anchor":"Support","icon":"mail","href":"mailto:support@withflex.com"},{"anchor":"Website","icon":"laptop","href":"https://www.withflex.com"}]},"tabs":[{"tab":"Welcome","pages":[{"title":"Welcome","href":""}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/developer-guides/introduction"}]},{"tab":"API Reference","groups":[{"group":"API Overview","pages":[{"title":"Introduction to the Flex API","sidebarTitle":"Introduction","href":"/api-reference/introduction"},{"title":"Expanding Resources","sidebarTitle":"Expanding Resources","href":"/api-reference/expanding-resources"}]},{"group":"API Reference","pages":[{"group":"Shipping Rates","pages":[{"title":"List Shipping Rates","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/shipping_rates","href":"/api-reference/shipping-rates/list-shipping-rates"},{"title":"Create Shipping Rate","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/shipping_rates","href":"/api-reference/shipping-rates/create-shipping-rate"},{"title":"Get Shipping Rate","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/shipping_rates/{id}","href":"/api-reference/shipping-rates/get-shipping-rate"},{"title":"Update Shipping Rate","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/shipping_rates/{id}","href":"/api-reference/shipping-rates/update-shipping-rate"}]},{"group":"Disputes","pages":[{"title":"List Disputes","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/disputes","href":"/api-reference/disputes/list-disputes"},{"title":"Count Disputes","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/disputes/count","href":"/api-reference/disputes/count-disputes"},{"title":"Get Dispute","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/disputes/{dispute_id}","href":"/api-reference/disputes/get-dispute"},{"title":"Update Dispute","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/disputes/{dispute_id}","href":"/api-reference/disputes/update-dispute"},{"title":"Close Dispute","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/disputes/{dispute_id}/close","href":"/api-reference/disputes/close-dispute"}]},{"group":"Events","pages":[{"title":"Retry Event","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/events/{id}/retry","href":"/api-reference/events/retry-event"}]},{"group":"Checkout Sessions","pages":[{"title":"List Checkout Sessions","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/checkout/sessions","href":"/api-reference/checkout-sessions/list-checkout-sessions"},{"title":"Create Checkout Session","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/checkout/sessions","href":"/api-reference/checkout-sessions/create-checkout-session"},{"title":"Get Checkout Session","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/checkout/sessions/{id}","href":"/api-reference/checkout-sessions/get-checkout-session"},{"title":"Get Line Items","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/checkout/sessions/{id}/line_items","href":"/api-reference/checkout-sessions/get-line-items"},{"title":"Confirm Checkout Session","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/checkout/sessions/{id}/confirm","href":"/api-reference/checkout-sessions/confirm-checkout-session"},{"title":"Capture Checkout Session","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/checkout/sessions/{id}/capture","href":"/api-reference/checkout-sessions/capture-checkout-session"},{"title":"Preview Capture Allocation","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/checkout/sessions/{id}/capture_allocation","href":"/api-reference/checkout-sessions/preview-capture-allocation"},{"title":"Reauth Checkout Session","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/checkout/sessions/{id}/reauth","href":"/api-reference/checkout-sessions/reauth-checkout-session"},{"title":"Refund Checkout Session","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/checkout/sessions/{id}/refund","href":"/api-reference/checkout-sessions/refund-checkout-session"},{"title":"Preview Refund Allocation","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/checkout/sessions/{id}/refund_allocation","href":"/api-reference/checkout-sessions/preview-refund-allocation"},{"title":"Cancel Auth Checkout Session","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/checkout/sessions/{id}/cancel","href":"/api-reference/checkout-sessions/cancel-auth-checkout-session"},{"title":"Resend Checkout Session Receipts","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/checkout/sessions/{id}/receipts/resend","href":"/api-reference/checkout-sessions/resend-checkout-session-receipts"},{"title":"Resend Checkout Session Lomn","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/checkout/sessions/{id}/lomn/resend","href":"/api-reference/checkout-sessions/resend-checkout-session-lomn"}]},{"group":"Coupons","pages":[{"title":"List Coupons","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/coupons","href":"/api-reference/coupons/list-coupons"},{"title":"Create Coupon","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/coupons","href":"/api-reference/coupons/create-coupon"},{"title":"Get Coupon","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/coupons/{id}","href":"/api-reference/coupons/get-coupon"}]},{"group":"Customers","pages":[{"title":"List customers","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/customers","href":"/api-reference/customers/list-customers"},{"title":"Create or update a customer","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/customers","href":"/api-reference/customers/create-or-update-a-customer"},{"title":"Retrieve a customer","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/customers/{id}","href":"/api-reference/customers/retrieve-a-customer"},{"title":"Delete a customer","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/customers/{id}","href":"/api-reference/customers/delete-a-customer"},{"title":"Update a customer","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/customers/{id}","href":"/api-reference/customers/update-a-customer"},{"title":"List a customer's payment methods","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/customers/{id}/payment_methods","href":"/api-reference/customers/list-a-customers-payment-methods"},{"title":"Retrieve a customer's payment method","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/customers/{id}/payment_methods/{pm_id}","href":"/api-reference/customers/retrieve-a-customers-payment-method"}]},{"group":"Exports","pages":[{"title":"List Exports","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/exports","href":"/api-reference/exports/list-exports"},{"title":"Create Export","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/exports","href":"/api-reference/exports/create-export"},{"title":"Get Export","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/exports/{id}","href":"/api-reference/exports/get-export"},{"title":"Cancel Export","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/exports/{id}/cancel","href":"/api-reference/exports/cancel-export"},{"title":"Create Export Url","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/exports/{id}/presigned_url","href":"/api-reference/exports/create-export-url"}]},{"group":"Invoices","pages":[{"title":"List Invoices","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/invoices","href":"/api-reference/invoices/list-invoices"},{"title":"Get Invoice","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/invoices/{id}","href":"/api-reference/invoices/get-invoice"},{"title":"Mark Invoice Uncollectible","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/invoices/{id}/mark_uncollectible","href":"/api-reference/invoices/mark-invoice-uncollectible"}]},{"group":"Products","pages":[{"title":"List Product Components","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/product_components","href":"/api-reference/products/list-product-components"},{"title":"Create Product Component","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/product_components","href":"/api-reference/products/create-product-component"},{"title":"Get Product Component","description":"Retrieves one of your product components by its `fcomp_` identifier, with the\nnutrition you recorded for it. Nutrient values are per 100 g.\n\nA component you have not registered nutrition for is a 404, even when the name\nitself exists in Flex's shared component table.","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/product_components/{id}","href":"/api-reference/products/get-product-component"},{"title":"Update Product Component","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/product_components/{id}","href":"/api-reference/products/update-product-component"},{"title":"List Products","description":"Returns a list of your products, sorted by creation date with the most recently created products appearing first. By default only active products are returned; pass `active=false` to list archived ones. You can also filter by `client_reference_id`, by a single `category`, or by metadata using `metadata[key]=value` query parameters. Category matching is case-insensitive and returns a product when it carries the supplied category, even if it carries additional categories.","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/products","href":"/api-reference/products/list-products"},{"title":"Create Product","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/products","href":"/api-reference/products/create-product"},{"title":"Processing Status","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/products/processing_status","href":"/api-reference/products/processing-status"},{"title":"Get Product","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/products/{id}","href":"/api-reference/products/get-product"},{"title":"Update Product","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/products/{id}","href":"/api-reference/products/update-product"}]},{"group":"Payment Intents","pages":[{"title":"List Payment Intents","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/payment_intents","href":"/api-reference/payment-intents/list-payment-intents"},{"title":"Get Payment Intent","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/payment_intents/{id}","href":"/api-reference/payment-intents/get-payment-intent"},{"title":"Send Receipt","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/payment_intents/{id}/receipt","href":"/api-reference/payment-intents/send-receipt"},{"title":"Cancel Payment Intent","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/payment_intents/{id}/cancel","href":"/api-reference/payment-intents/cancel-payment-intent"}]},{"group":"Payment Links","pages":[{"title":"List Payment Links","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/payment_links","href":"/api-reference/payment-links/list-payment-links"},{"title":"Create Payment Link","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/payment_links","href":"/api-reference/payment-links/create-payment-link"},{"title":"Get Payment Link","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/payment_links/{id}","href":"/api-reference/payment-links/get-payment-link"},{"title":"Update Payment Link","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/payment_links/{id}","href":"/api-reference/payment-links/update-payment-link"}]},{"group":"Payouts","pages":[{"title":"List Payouts","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/payouts","href":"/api-reference/payouts/list-payouts"}]},{"group":"Prices","pages":[{"title":"List Prices","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/prices","href":"/api-reference/prices/list-prices"},{"title":"Create Price","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/prices","href":"/api-reference/prices/create-price"},{"title":"Get Price","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/prices/{id}","href":"/api-reference/prices/get-price"},{"title":"Update Price","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/prices/{id}","href":"/api-reference/prices/update-price"}]},{"group":"Promo Codes","pages":[{"title":"List Promo Codes","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/promo_codes","href":"/api-reference/promo-codes/list-promo-codes"},{"title":"Create Promo Code","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/promo_codes","href":"/api-reference/promo-codes/create-promo-code"},{"title":"Get Promo Code","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/promo_codes/{id}","href":"/api-reference/promo-codes/get-promo-code"},{"title":"Update Promo Code","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/promo_codes/{id}","href":"/api-reference/promo-codes/update-promo-code"}]},{"group":"Refunds","pages":[{"title":"List Refunds","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/refunds","href":"/api-reference/refunds/list-refunds"},{"title":"Create Refund","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/refunds","href":"/api-reference/refunds/create-refund"},{"title":"Get Refund","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/refunds/{refund_id}","href":"/api-reference/refunds/get-refund"},{"title":"Update Refund","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/refunds/{refund_id}","href":"/api-reference/refunds/update-refund"}]},{"group":"Reviews","pages":[{"title":"List Reviews","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/reviews","href":"/api-reference/reviews/list-reviews"},{"title":"Get Review","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/reviews/{review_id}","href":"/api-reference/reviews/get-review"}]},{"group":"Subscriptions","pages":[{"title":"List Subscriptions","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/subscriptions","href":"/api-reference/subscriptions/list-subscriptions"},{"title":"Get Subscription","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/subscriptions/{id}","href":"/api-reference/subscriptions/get-subscription"},{"title":"Cancel Subscription","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/subscriptions/{id}","href":"/api-reference/subscriptions/cancel-subscription"},{"title":"Update Subscription","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/subscriptions/{id}","href":"/api-reference/subscriptions/update-subscription"},{"title":"Resend Subscription Receipts","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/subscriptions/{id}/receipts/resend","href":"/api-reference/subscriptions/resend-subscription-receipts"},{"title":"Get Refund Preview","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/subscriptions/{id}/refund_preview","href":"/api-reference/subscriptions/get-refund-preview"},{"title":"Pause Subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/subscriptions/{id}/pause","href":"/api-reference/subscriptions/pause-subscription"},{"title":"Update Pause","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/subscriptions/{id}/pause","href":"/api-reference/subscriptions/update-pause"},{"title":"Resume Subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/subscriptions/{id}/resume","href":"/api-reference/subscriptions/resume-subscription"},{"title":"Stop a failed resume and keep the subscription paused","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/subscriptions/{id}/resume/cancel","href":"/api-reference/subscriptions/stop-a-failed-resume-and-keep-the-subscription-paused"}]},{"group":"Balance Transactions","pages":[{"title":"List Balance Transactions","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/balance_transactions","href":"/api-reference/balance-transactions/list-balance-transactions"}]},{"group":"Setup Intents","pages":[{"title":"List Setup Intents","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/setup_intents","href":"/api-reference/setup-intents/list-setup-intents"},{"title":"Create Setup Intent","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/setup_intents","href":"/api-reference/setup-intents/create-setup-intent"},{"title":"Get Setup Intent","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/setup_intents/{id}","href":"/api-reference/setup-intents/get-setup-intent"}]},{"group":"Captures","pages":[{"title":"List captures","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/captures","href":"/api-reference/captures/list-captures"},{"title":"Retrieve a capture","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/captures/{capture_id}","href":"/api-reference/captures/retrieve-a-capture"},{"title":"Update a capture","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/captures/{capture_id}","href":"/api-reference/captures/update-a-capture"}]},{"group":"Files","pages":[{"title":"List Files","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/files","href":"/api-reference/files/list-files"},{"title":"Create File","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/files","href":"/api-reference/files/create-file"},{"title":"Retrieve File","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/files/{id}","href":"/api-reference/files/retrieve-file"}]}]}]},{"tab":"Compliance","pages":[{"title":"Compliance","href":"/compliance/introduction"}]},{"tab":"Marketing","pages":[{"title":"Marketing","href":"/merchant-success/introduction"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Update Product Component - Flex Documentation","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CBsVopKK.js","utils-DZAk68jJ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-D32AYZrP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D_A5_cny.js","snippetPresets-xNRfS9th.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BIB25-tq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CydJ4w4j.js","shallow-CYPBeQSG.js","getApiPlaygroundDisplay-A5xJVBOu.js","CodeSnippet-BVRTgi3m.js","CodeSnippets-DjD6BSlt.js","Page-Dr40SSJq.js","getPastedJson-D4V4JyrR.js","icon-uhcnG22T.js","MethodPill-CM-ZQdGH.js","DuplicateIcon-B_WnOiNf.js","createIcon-CJsb8utt.js","DynamicMarkdown-D-2HDKEp.js","SectionHeading-KP5xmMgQ.js","axios-vUo_bRtp.js","Markdown-D_k0dg6k.js","clsx-DK3K4Z1S.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DE3EVdvd.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-fN9H9n9g.js"]}