Various types of measurement, and ranges thereof.
In principle, we could have sub-groupings such as “physical quantities” (volume, mass, acidity, etc), “non-physical quantities” (percentage, count, date, etc). However, this adds complexity to the schema for little gain, because there is nowhere else in the schema where we would rely on such groupings. So, instead, we keep a flat hierarchy.
In several cases, there is only one possible unit (eg acidity, percentage, count), so it would be possible to omit units altogether. However, in common with BeerJSON, we retain them for a couple of reasons. Firstly, it makes the serialisation easier to understand for human readers. Secondly, it makes things more extendable: eg, if we decided at a future date we would like to support “percentage points” in addition to “percentages”, then it’s a smaller change to add them.
For Ranges, note that we do not force the same units for lower and upper bounds. This is partly because it would complicate the schema for only small gain, and partly because it’s conceivable that you want different units on min and max (eg if you had a mass range you might want min in grams and max in kilograms).
Type: object(?)
No description provided for this model.
Acidity is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ pH |
| value | ✅ | number |
No description provided for this model.
Bitterness is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ IBUs |
| value | ✅ | number |
No description provided for this model.
Carbonation is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ vols∙ g/l |
| value | ✅ | number |
Supports both grain color properties, such as Lovibond, and wort color properties such as SRM and EBC.
Color is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ EBC∙ Lovi∙ SRM |
| value | ✅ | number |
Used where unitless amounts are required, such as 1 apple, or 1 yeast packet. Note that this is allowed to be fractional because you might want to add 1½ cinnamon sticks or 2.5 packets of yeast.
Count is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ 1∙ unit∙ each∙ dimensionless∙ pkg |
| value | ✅ | number |
To avoid ambiguity, dates are always stored in ISO 8601 format. The two possibilities here are with and without time of day.
Date is a string matching regular expression \d{4}-\d{2}-\d{2}\|\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}
Sometimes referred to as “gravity” as a shorthand for “specific gravity”. Typically, brewers measure relative density (aka specific gravity) to gauge percent of sugar content (ie plato and brix).
Density is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ sg∙ plato∙ brix |
| value | ✅ | number |
Diastatic power is a measurement of malted grains enzymatic content. A value of 35 Lintner is needed to self convert, while a value of 100 or more is desirable for base malts.
DiastaticPower is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ Lintner∙ WK |
| value | ✅ | number |
No description provided for this model.
Length is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ mm∙ cm∙ m∙ in∙ ft |
| value | ✅ | number |
No description provided for this model.
Mass is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ mg∙ g∙ kg∙ lb∙ oz |
| value | ✅ | number |
Strictly speaking, mass concentration (eg mg/l) is different from mass fraction (eg ppm, ppb) but, in the context of brewing, it is usually approximately true that 1 mg/L mass concentration = 1 parts per million (ppm) mass fraction.
MassFractionOrConcentration is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ ppm∙ ppb∙ mg/l |
| value | ✅ | number |
No description provided for this model.
Percentage is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ % |
| value | ✅ | number |
No description provided for this model.
Pressure is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ kPa∙ psi∙ bar |
| value | ✅ | number |
The amount of heat that must be added to one unit of mass of the substance in order to cause an increase of one unit in temperature.
SpecificHeatCapacity is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ Cal/(g C)∙ J/(kg K)∙ BTU/(lb F) |
| value | ✅ | number |
Specific volume is the reciprocal of density, commonly used for mash thickness.
SpecificVolume is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ qt/lb∙ gal/lb∙ gal/oz∙ l/g∙ l/kg∙ floz/oz∙ m^3/kg∙ ft^3/lb |
| value | ✅ | number |
No description provided for this model.
Temperature is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ C∙ F |
| value | ✅ | number |
Note this is NOT dates or times of day but length-of-time or elapsed time, eg duration of a mash step, or how long after the start of the boil to add something.
Time is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ sec∙ min∙ hr∙ day∙ week |
| value | ✅ | integer |
We use semantic versioning, which encodes a version by a three-part version number (Major.Minor.Patch)
VersionNumber is a string matching regular expression \d+[.]\d+[.]\d+
Viscosity of fluids
Viscosity is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ cP∙ mPa-s |
| value | ✅ | number |
No description provided for this model.
Volume is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| unit | ✅ | Enum: ∙ ml∙ l∙ tsp∙ tbsp∙ floz∙ cup∙ pt∙ qt∙ gal∙ bbl∙ itsp∙ itbsp∙ ifloz∙ icup∙ ipt∙ iqt∙ igal∙ ibbl |
| value | ✅ | number |
No description provided for this model.
RangeOfBitterness is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| minimum | ✅ | Bitterness |
| maximum | ✅ | Bitterness |
No description provided for this model.
RangeOfCarbonation is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| minimum | ✅ | Carbonation |
| maximum | ✅ | Carbonation |
No description provided for this model.
RangeOfTemperature is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| minimum | ✅ | Temperature |
| maximum | ✅ | Temperature |
No description provided for this model.
RangeOfColor is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| minimum | ✅ | Color |
| maximum | ✅ | Color |
No description provided for this model.
RangeOfDensity is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| minimum | ✅ | Density |
| maximum | ✅ | Density |
No description provided for this model.
RangeOfPercentage is a JSON object with the following properties:
| Property | Required? | Type |
|---|---|---|
| minimum | ✅ | Percentage |
| maximum | ✅ | Percentage |
Documentation generated from the DotBeer schema on 2026-05-31 at 18:49:39+0200.