Punk API · Schema

Beer

A BrewDog DIY Dog beer recipe — full crowdsourced recipe entry from the Punk API dataset.

Food And DrinkBeerBrewDogDIY DogRecipesOpen SourcePublic APIsRESTDeprecated

Properties

Name Type Description
id integer Unique recipe identifier (1-325).
name string Beer name.
tagline string Short marketing tagline.
first_brewed string First brewed date (mm/yyyy or yyyy).
description string Free-text recipe description.
image_url stringnull Bottle image URL.
abv number Alcohol by volume (%).
ibu numbernull International Bitterness Units.
target_fg numbernull Target final gravity.
target_og numbernull Target original gravity.
ebc numbernull European Brewery Convention colour.
srm numbernull Standard Reference Method colour.
ph numbernull Target wort pH.
attenuation_level numbernull Yeast attenuation level (%).
volume object
boil_volume object
method object
ingredients object
food_pairing array Suggested food pairings.
brewers_tips stringnull Brewer's tips for replication.
contributed_by stringnull Recipe transcription attribution.
View JSON Schema on GitHub

JSON Schema

punkapi-beer-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/punkapi/refs/heads/main/json-schema/punkapi-beer-schema.json",
  "title": "Beer",
  "description": "A BrewDog DIY Dog beer recipe — full crowdsourced recipe entry from the Punk API dataset.",
  "type": "object",
  "required": [
    "id",
    "name",
    "tagline",
    "first_brewed",
    "description",
    "abv",
    "volume",
    "boil_volume",
    "method",
    "ingredients"
  ],
  "properties": {
    "id": { "type": "integer", "description": "Unique recipe identifier (1-325).", "example": 1 },
    "name": { "type": "string", "description": "Beer name.", "example": "Buzz" },
    "tagline": { "type": "string", "description": "Short marketing tagline.", "example": "A Real Bitter Experience." },
    "first_brewed": { "type": "string", "description": "First brewed date (mm/yyyy or yyyy).", "example": "09/2007" },
    "description": { "type": "string", "description": "Free-text recipe description." },
    "image_url": { "type": ["string", "null"], "format": "uri", "description": "Bottle image URL.", "example": "https://images.punkapi.com/v2/keg.png" },
    "abv": { "type": "number", "description": "Alcohol by volume (%).", "example": 4.5 },
    "ibu": { "type": ["number", "null"], "description": "International Bitterness Units.", "example": 60 },
    "target_fg": { "type": ["number", "null"], "description": "Target final gravity.", "example": 1010 },
    "target_og": { "type": ["number", "null"], "description": "Target original gravity.", "example": 1044 },
    "ebc": { "type": ["number", "null"], "description": "European Brewery Convention colour.", "example": 20 },
    "srm": { "type": ["number", "null"], "description": "Standard Reference Method colour.", "example": 10 },
    "ph": { "type": ["number", "null"], "description": "Target wort pH.", "example": 4.4 },
    "attenuation_level": { "type": ["number", "null"], "description": "Yeast attenuation level (%).", "example": 75 },
    "volume": { "$ref": "#/$defs/Measurement" },
    "boil_volume": { "$ref": "#/$defs/Measurement" },
    "method": { "$ref": "#/$defs/Method" },
    "ingredients": { "$ref": "#/$defs/Ingredients" },
    "food_pairing": { "type": "array", "items": { "type": "string" }, "description": "Suggested food pairings." },
    "brewers_tips": { "type": ["string", "null"], "description": "Brewer's tips for replication." },
    "contributed_by": { "type": ["string", "null"], "description": "Recipe transcription attribution." }
  },
  "$defs": {
    "Measurement": {
      "type": "object",
      "required": ["value", "unit"],
      "properties": {
        "value": { "type": "number" },
        "unit": { "type": "string" }
      }
    },
    "Temperature": {
      "type": "object",
      "required": ["value", "unit"],
      "properties": {
        "value": { "type": "number" },
        "unit": { "type": "string", "example": "celsius" }
      }
    },
    "MashStep": {
      "type": "object",
      "required": ["temp"],
      "properties": {
        "temp": { "$ref": "#/$defs/Temperature" },
        "duration": { "type": ["integer", "null"] }
      }
    },
    "Method": {
      "type": "object",
      "required": ["mash_temp", "fermentation"],
      "properties": {
        "mash_temp": { "type": "array", "items": { "$ref": "#/$defs/MashStep" } },
        "fermentation": {
          "type": "object",
          "required": ["temp"],
          "properties": { "temp": { "$ref": "#/$defs/Temperature" } }
        },
        "twist": { "type": ["string", "null"] }
      }
    },
    "Malt": {
      "type": "object",
      "required": ["name", "amount"],
      "properties": {
        "name": { "type": "string" },
        "amount": { "$ref": "#/$defs/Measurement" }
      }
    },
    "Hop": {
      "type": "object",
      "required": ["name", "amount", "add", "attribute"],
      "properties": {
        "name": { "type": "string" },
        "amount": { "$ref": "#/$defs/Measurement" },
        "add": { "type": "string", "description": "When the hop is added (start, middle, end, dry hop)." },
        "attribute": { "type": "string", "description": "Hop role (bitter, flavour, aroma)." }
      }
    },
    "Ingredients": {
      "type": "object",
      "required": ["malt", "hops", "yeast"],
      "properties": {
        "malt": { "type": "array", "items": { "$ref": "#/$defs/Malt" } },
        "hops": { "type": "array", "items": { "$ref": "#/$defs/Hop" } },
        "yeast": { "type": "string" }
      }
    }
  }
}