ca.verworn.recipe

daedalus.verworn.ca

{
  "id": "ca.verworn.recipe",
  "defs": {
    "main": {
      "key": "tid",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "title",
          "ingredients",
          "instructions",
          "createdAt"
        ],
        "properties": {
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 640,
              "maxGraphemes": 64
            },
            "maxLength": 20,
            "description": "Free-form tags for the author's own organization."
          },
          "image": {
            "type": "blob",
            "accept": [
              "image/png",
              "image/jpeg",
              "image/webp"
            ],
            "maxSize": 2000000,
            "description": "Photo of the finished dish."
          },
          "notes": {
            "type": "string",
            "maxLength": 15000,
            "description": "Additional remarks, substitutions, or variations.",
            "maxGraphemes": 1500
          },
          "title": {
            "type": "string",
            "maxLength": 1200,
            "minLength": 1,
            "description": "Name of the recipe; can not be empty.",
            "maxGraphemes": 120
          },
          "yield": {
            "type": "string",
            "maxLength": 640,
            "description": "Free-form yield, for recipes not measured in servings (eg, '24 cookies').",
            "maxGraphemes": 64
          },
          "course": {
            "type": "string",
            "maxLength": 64,
            "description": "Which part of a meal the recipe is for.",
            "knownValues": [
              "appetizer",
              "breakfast",
              "brunch",
              "lunch",
              "dinner",
              "side",
              "salad",
              "soup",
              "dessert",
              "snack",
              "drink",
              "sauce",
              "bread"
            ]
          },
          "rating": {
            "type": "integer",
            "maximum": 5,
            "minimum": 1,
            "description": "The author's own rating of the recipe, from 1 to 5 stars."
          },
          "source": {
            "ref": "#source",
            "type": "ref",
            "description": "Where the recipe came from, if it is not original."
          },
          "cuisine": {
            "type": "string",
            "maxLength": 640,
            "description": "Culinary tradition the recipe belongs to (eg, 'Japanese').",
            "maxGraphemes": 64
          },
          "cookTime": {
            "type": "integer",
            "minimum": 0,
            "description": "Active cooking time, in minutes."
          },
          "prepTime": {
            "type": "integer",
            "minimum": 0,
            "description": "Hands-on preparation time, in minutes."
          },
          "servings": {
            "type": "integer",
            "minimum": 1,
            "description": "Number of servings the recipe yields."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "Client-declared timestamp when this recipe was first created."
          },
          "totalTime": {
            "type": "integer",
            "minimum": 0,
            "description": "Total time from start to finish, in minutes. May exceed prepTime plus cookTime when the recipe includes resting or marinating."
          },
          "updatedAt": {
            "type": "string",
            "format": "datetime",
            "description": "Client-declared timestamp when this recipe was last edited."
          },
          "difficulty": {
            "type": "string",
            "maxLength": 64,
            "description": "How demanding the recipe is to make.",
            "knownValues": [
              "easy",
              "medium",
              "hard"
            ]
          },
          "description": {
            "type": "string",
            "maxLength": 5000,
            "description": "Short summary or blurb about the recipe.",
            "maxGraphemes": 500
          },
          "ingredients": {
            "type": "array",
            "items": {
              "ref": "#ingredient",
              "type": "ref"
            },
            "maxLength": 200,
            "minLength": 1,
            "description": "Ingredients required, in the order they are used."
          },
          "instructions": {
            "type": "array",
            "items": {
              "ref": "#instructionStep",
              "type": "ref"
            },
            "maxLength": 100,
            "minLength": 1,
            "description": "Ordered preparation steps."
          },
          "dietaryLabels": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 64,
              "knownValues": [
                "vegetarian",
                "vegan",
                "gluten-free",
                "dairy-free",
                "nut-free",
                "egg-free",
                "halal",
                "kosher",
                "low-carb",
                "keto",
                "paleo"
              ]
            },
            "maxLength": 20,
            "description": "Dietary properties of the finished dish."
          }
        }
      },
      "description": "A cooking recipe stored in the author's repository."
    },
    "source": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "format": "uri",
          "description": "Link to the original recipe."
        },
        "name": {
          "type": "string",
          "maxLength": 2000,
          "description": "Who or what the recipe came from (eg, a cookbook or person).",
          "maxGraphemes": 200
        }
      },
      "description": "Attribution for a recipe adapted from elsewhere."
    },
    "ingredient": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 1000,
          "minLength": 1,
          "description": "The ingredient itself (eg, 'all-purpose flour').",
          "maxGraphemes": 100
        },
        "note": {
          "type": "string",
          "maxLength": 1000,
          "description": "Preparation note for this ingredient (eg, 'finely chopped').",
          "maxGraphemes": 100
        },
        "unit": {
          "type": "string",
          "maxLength": 320,
          "description": "Unit of measure for the amount (eg, 'cup', 'g', 'tbsp').",
          "maxGraphemes": 32
        },
        "group": {
          "type": "string",
          "maxLength": 640,
          "description": "Optional heading grouping related ingredients (eg, 'For the sauce').",
          "maxGraphemes": 64
        },
        "amount": {
          "type": "string",
          "maxLength": 320,
          "description": "Quantity as written, kept as a string to allow fractions and ranges (eg, '1 1/2', '2-3').",
          "maxGraphemes": 32
        },
        "optional": {
          "type": "boolean",
          "description": "Whether this ingredient can be left out."
        }
      },
      "description": "A single ingredient line."
    },
    "instructionStep": {
      "type": "object",
      "required": [
        "text"
      ],
      "properties": {
        "text": {
          "type": "string",
          "maxLength": 10000,
          "minLength": 1,
          "description": "What to do in this step.",
          "maxGraphemes": 1000
        },
        "group": {
          "type": "string",
          "maxLength": 640,
          "description": "Optional heading grouping related steps (eg, 'Make the dough').",
          "maxGraphemes": 64
        }
      },
      "description": "A single step in the preparation."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}

Validate Record

Validate a record against ca.verworn.recipe

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:pkukcba7utvxumdybkcocfhb
CID
bafyreihy6wt7r5n7vxkhkfffurfrf6yfbhvpwsoayxejp7b6giugmfrvly
Indexed At
2026-08-06 02:33 UTC
AT-URI
at://did:plc:pkukcba7utvxumdybkcocfhb/com.atproto.lexicon.schema/ca.verworn.recipe

Lexicon Garden

@