{"openapi":"3.1.0","info":{"title":"Cheese Making API","version":"1.0.0","description":"Cheese-making maths as an API, computed locally and deterministically — the yield and rennet numbers an artisan or home cheesemaker plans a make around. The yield endpoint applies the classic Van Slyke formula, yield % of milk = [(0.93 × fat) + (casein − 0.1)] × 1.09 / (1 − cheese moisture), from the milk fat, the casein (or true protein, since casein ≈ 0.78 × protein) and the target cheese moisture — whole milk at 3.5 % fat and 2.5 % casein making a 37 %-moisture cheddar yields about 9.78 % of the milk weight, so 100 litres gives roughly 10 kg of cheese and it takes about 9.9 litres of milk per kilogram. The rennet endpoint doses a milk volume to set: single-strength liquid rennet at roughly 0.2 ml per litre (double and triple strengths and tablets too), diluted about 20× in cool, non-chlorinated water before stirring in. Everything is computed locally and deterministically, so it is instant and private. Ideal for cheesemaking, dairy, creamery and artisan-food app developers, make-sheet and yield-planning tools, and dairy-science education. Pure local computation — no key, no third-party service, instant. Metric: litres, grams, percent. Live, nothing stored. 2 compute endpoints. Rennet strengths vary by product — confirm the label IMCU; a planning aid.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/cheese-api","description":"oanor gateway"}],"tags":[{"name":"Cheese"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/rennet":{"get":{"operationId":"get_v1_rennet","tags":["Cheese"],"summary":"Rennet dose","description":"","parameters":[{"name":"milk_volume","in":"query","required":true,"description":"Milk volume (litres)","schema":{"type":"string"},"example":"10"},{"name":"form","in":"query","required":false,"description":"liquid-single/double/triple or tablet","schema":{"type":"string"},"example":"liquid-single"},{"name":"ml_per_liter","in":"query","required":false,"description":"Override ml per litre","schema":{"type":"string"}},{"name":"liters_per_tablet","in":"query","required":false,"description":"Litres per tablet (default 18)","schema":{"type":"string"}},{"name":"dilution_ratio","in":"query","required":false,"description":"Dilution water × rennet (default 20)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Single-strength liquid rennet ≈ 0.2 ml per litre of milk; dilute ~20× in cool, non-chlorinated water before stirring in. Tablets ≈ 1 per 18 L. Always follow your rennet's label IMCU strength.","inputs":{"form":"liquid-single","milk_volume":10},"rennet_ml":2,"ml_per_liter":0.2,"dilution_water_ml":40},"meta":{"timestamp":"2026-06-06T07:14:11.351Z","request_id":"38cbf351-b26a-4d39-9e56-cb45e5cafa12"},"status":"ok","message":"Rennet dose","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/yield":{"get":{"operationId":"get_v1_yield","tags":["Cheese"],"summary":"Van Slyke cheese yield","description":"","parameters":[{"name":"fat_percent","in":"query","required":true,"description":"Milk fat %","schema":{"type":"string"},"example":"3.5"},{"name":"casein_percent","in":"query","required":false,"description":"Casein % (or protein_percent)","schema":{"type":"string"},"example":"2.5"},{"name":"protein_percent","in":"query","required":false,"description":"True protein %","schema":{"type":"string"}},{"name":"moisture_percent","in":"query","required":false,"description":"Cheese moisture % (default 37)","schema":{"type":"string"},"example":"37"},{"name":"milk_volume","in":"query","required":false,"description":"Milk volume (litres) for kg yield","schema":{"type":"string"},"example":"100"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Van Slyke yield % = [(0.93·fat) + (casein − 0.1)] × 1.09 / (1 − moisture). About 10 kg of cheddar per 100 kg of milk. Casein ≈ 0.78 × true protein.","inputs":{"fat_percent":3.5,"casein_percent":2.5,"moisture_percent":37},"yield_percent":9.784,"milk_weight_kg":103.2,"cheese_yield_kg":10.097,"milk_volume_liters":100,"milk_per_kg_cheese_liters":9.9},"meta":{"timestamp":"2026-06-06T07:14:11.444Z","request_id":"e5922ef1-6b3a-40ed-8406-369f094468c3"},"status":"ok","message":"Cheese yield","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"notes":"Metric: litres, grams, percent. Van Slyke uses casein (≈ 0.78 × true protein) and the target cheese moisture. Rennet strengths vary by product — confirm the label IMCU. A planning aid.","service":"cheese-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/yield":"Cheese yield (Van Slyke) from milk fat, casein/protein and cheese moisture.","GET /v1/rennet":"Rennet to set a milk volume (liquid strengths or tablets) with dilution water."},"description":"Cheese-making maths: Van Slyke cheese yield, rennet dosing and starter culture."},"meta":{"timestamp":"2026-06-06T07:14:11.533Z","request_id":"e733b8c7-444c-49c4-8802-33081a2b6a54"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":6750,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":310,"monthly_call_quota":64000,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":860,"monthly_call_quota":254000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":2750,"monthly_call_quota":1450000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/cheese-api"}