{"openapi":"3.1.0","info":{"title":"POST /api/v1/inventory/production/recipes","version":"1.0.0","description":"Create recipe"},"servers":[{"url":"https://api.ondayzero.com","description":"Production"}],"paths":{"/api/v1/inventory/production/recipes":{"post":{"tags":["inventory:production"],"summary":"Create recipe","description":"Create a new production recipe with materials, output variants, and processing steps.","operationId":"create_recipe_api_v1_inventory_production_recipes_post","parameters":[{"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"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeResponse"}}}},"400":{"description":"Bad Request - Invalid input","content":{"application/json":{"example":{"detail":"Invalid request parameters"}}}},"401":{"description":"Unauthorized - Authentication required","content":{"application/json":{"example":{"detail":"Not authenticated"}}}},"403":{"description":"Forbidden - Insufficient permissions","content":{"application/json":{"example":{"detail":"Not enough permissions"}}}},"422":{"description":"Validation Error - Invalid data format","content":{"application/json":{"example":{"detail":[{"loc":["body","field"],"msg":"field required","type":"value_error.missing"}]}}}}}}}},"components":{"schemas":{"RecipeCreateRequest":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"output_unit_name":{"type":"string","maxLength":50,"title":"Output Unit Name","default":"unit"},"output_unit_weight":{"type":"number","exclusiveMinimum":0.0,"title":"Output Unit Weight","default":1.0},"output_unit_weight_unit":{"type":"string","maxLength":20,"title":"Output Unit Weight Unit","default":"oz"},"conversion_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Conversion Params"},"materials":{"items":{"$ref":"#/components/schemas/RecipeMaterialBase"},"type":"array","title":"Materials"},"output_variants":{"items":{"$ref":"#/components/schemas/RecipeOutputVariantBase"},"type":"array","title":"Output Variants"},"processing_steps":{"items":{"$ref":"#/components/schemas/RecipeProcessingStepBase"},"type":"array","title":"Processing Steps"}},"type":"object","required":["name"],"title":"RecipeCreateRequest"},"RecipeMaterialBase":{"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."}},"type":"object","required":["name","quantity_type","quantity_value"],"title":"RecipeMaterialBase"},"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"},"RecipeOutputVariantBase":{"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."}},"type":"object","required":["name"],"title":"RecipeOutputVariantBase"},"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"},"RecipeProcessingStepBase":{"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."}},"type":"object","required":["name","allocation_type"],"title":"RecipeProcessingStepBase"},"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"}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Token","description":"API token authentication. Format: `Bearer dz_...`"}}},"security":[{"BearerAuth":[]}]}