{"openapi":"3.1.0","info":{"title":"POST /api/v1/inventory/production/recipes/{recipe_id}/duplicate","version":"1.0.0","description":"Duplicate recipe"},"servers":[{"url":"https://api.ondayzero.com","description":"Production"}],"paths":{"/api/v1/inventory/production/recipes/{recipe_id}/duplicate":{"post":{"tags":["inventory:production"],"summary":"Duplicate recipe","description":"Deep-clone a recipe and all its children.","operationId":"duplicate_recipe_api_v1_inventory_production_recipes__recipe_id__duplicate_post","parameters":[{"name":"recipe_id","in":"path","required":true,"schema":{"type":"string","title":"Recipe Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-business-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Business-Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeResponse"}}}},"404":{"description":"Not Found - Resource does not exist","content":{"application/json":{"example":{"detail":"Resource not found"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"RecipeMaterialResponse":{"properties":{"category":{"type":"string","title":"Category","description":"Grouping label: raw_material, inclusion, packaging, or other.","default":"raw_material"},"name":{"type":"string","title":"Name","description":"Material name."},"quantity_type":{"type":"string","title":"Quantity Type","description":"pct_of_weight | fixed_per_unit | per_n_units | fixed_per_run"},"quantity_value":{"type":"number","title":"Quantity Value","description":"Numeric quantity parameter."},"quantity_unit":{"type":"string","title":"Quantity Unit","description":"Unit of the quantity value (g, oz, ml, units …).","default":"units"},"yield_factor":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Yield Factor","description":"Decimal yield 0-1.","default":1.0},"cost_per_unit":{"type":"integer","title":"Cost Per Unit","description":"Cost in cents (or whole-currency units for bulk like $/MT).","default":0},"cost_unit":{"type":"string","title":"Cost Unit","description":"Denominator: per_lb, per_kg, per_mt, per_unit, per_oz, per_gal.","default":"per_unit"},"position":{"type":"integer","title":"Position","description":"Display ordering.","default":0},"output_variant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Variant Id","description":"Scope to a specific output variant (for inclusions)."},"variant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variant Id","description":"Optional link to an inventory Variant."},"vendor_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vendor Id","description":"Optional link to a Vendor."},"id":{"type":"string","title":"Id"},"recipe_id":{"type":"string","title":"Recipe Id"}},"type":"object","required":["name","quantity_type","quantity_value","id","recipe_id"],"title":"RecipeMaterialResponse"},"RecipeOutputVariantResponse":{"properties":{"name":{"type":"string","title":"Name","description":"Variant/SKU name."},"allocation_pct":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Allocation Pct","description":"Percentage of the run.","default":0.0},"is_remainder":{"type":"boolean","title":"Is Remainder","description":"Auto-calc as 100% minus others.","default":false},"position":{"type":"integer","title":"Position","default":0},"variant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variant Id","description":"Optional link to inventory Variant."},"id":{"type":"string","title":"Id"},"recipe_id":{"type":"string","title":"Recipe Id"}},"type":"object","required":["name","id","recipe_id"],"title":"RecipeOutputVariantResponse"},"RecipeProcessingStepResponse":{"properties":{"name":{"type":"string","title":"Name","description":"Step / vendor name."},"step_type":{"type":"string","title":"Step Type","description":"Label: Conversion, Co-Packing, Assembly …","default":"Processing"},"allocation_type":{"type":"string","title":"Allocation Type","description":"pct_of_total | by_output_variant | all_units"},"allocation_pct":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Allocation Pct","description":"Percentage if pct_of_total."},"cost_per_unit":{"type":"integer","title":"Cost Per Unit","description":"Cost in cents.","default":0},"cost_unit":{"type":"string","title":"Cost Unit","description":"per_lb, per_unit, per_kg …","default":"per_unit"},"output_variant_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Output Variant Ids","description":"Output variant IDs for by_output_variant."},"position":{"type":"integer","title":"Position","default":0},"vendor_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vendor Id","description":"Optional link to Vendor."},"id":{"type":"string","title":"Id"},"recipe_id":{"type":"string","title":"Recipe Id"}},"type":"object","required":["name","allocation_type","id","recipe_id"],"title":"RecipeProcessingStepResponse"},"RecipeResponse":{"properties":{"id":{"type":"string","title":"Id"},"business_id":{"type":"string","title":"Business Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"output_unit_name":{"type":"string","title":"Output Unit Name"},"output_unit_weight":{"type":"number","title":"Output Unit Weight"},"output_unit_weight_unit":{"type":"string","title":"Output Unit Weight Unit"},"conversion_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Conversion Params"},"materials":{"items":{"$ref":"#/components/schemas/RecipeMaterialResponse"},"type":"array","title":"Materials","default":[]},"output_variants":{"items":{"$ref":"#/components/schemas/RecipeOutputVariantResponse"},"type":"array","title":"Output Variants","default":[]},"processing_steps":{"items":{"$ref":"#/components/schemas/RecipeProcessingStepResponse"},"type":"array","title":"Processing Steps","default":[]},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["id","business_id","name","output_unit_name","output_unit_weight","output_unit_weight_unit","created_at","updated_at"],"title":"RecipeResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Token","description":"API token authentication. Format: `Bearer dz_...`"}}},"security":[{"BearerAuth":[]}]}