io.kich.recipe.defs

kich.io

Schema Diff

+5 -0

From

CID
bafyreifrzoaopyg...
Indexed At
2026-09-12 22:53 UTC
View this version

To

CID
bafyreievxsm7ukv...
Indexed At
2026-09-12 23:51 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 2 non-breaking changes.

Non-Breaking Changes (2)
  • AddedVertex AddedVertex { vertex_id: "io.kich.recipe.defs#recipeView.createdAt" }
  • AddedEdge AddedEdge { src: "io.kich.recipe.defs#recipeView", tgt: "io.kich.recipe.defs#recipeView.createdAt", kind: "prop", name: Some("createdAt") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "io.kich.recipe.defs#recipeView.createdAt" }

Additional Notes

  • Non-breaking: AddedEdge { src: "io.kich.recipe.defs#recipeView", tgt: "io.kich.recipe.defs#recipeView.createdAt", kind: "prop", name: Some("createdAt") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "collectionRef": {
5 5
      "description": "A collection this recipe belongs to, by id and display name.",
6 6
      "properties": {
7 7
        "id": {
8 8
          "type": "string"
9 9
        },
10 10
        "name": {
11 11
          "type": "string"
12 12
        }
13 13
      },
14 14
      "required": [
15 15
        "id",
16 16
        "name"
17 17
      ],
18 18
      "type": "object"
19 19
    },
20 20
    "main": {
21 21
      "description": "Shared definitions for recipe-related lexicons",
22 22
      "properties": {},
23 23
      "type": "object"
24 24
    },
25 25
    "recipeView": {
26 26
      "description": "A recipe as a list reader sees it: enough to choose one, not enough to cook it. Ingredients and instructions are deliberately absent — a caller that wants to cook follows `url`.",
27 27
      "properties": {
28 28
        "collections": {
29 29
          "items": {
30 30
            "ref": "#collectionRef",
31 31
            "type": "ref"
32 32
          },
33 33
          "type": "array"
34 34
        },
35 35
        "completenessPercent": {
36 36
          "description": "How much of this recipe the pantry already covers, 0–100. A whole number rather than the stored 0–1 fraction, because lexicons have no float type and no reader needs the precision.",
37 37
          "maximum": 100,
38 38
          "minimum": 0,
39 39
          "type": "integer"
40 40
        },
41 41
        "cookTimeMinutes": {
42 42
          "minimum": 0,
43 43
          "type": "integer"
44 44
        },
45 +
        "createdAt": {
46 +
          "description": "When the recipe was saved to this kitchen. Distinct from `updatedAt`, which moves every time somebody edits it — a reader sorting a cookbook by what is new wants the first, not the second.",
47 +
          "format": "datetime",
48 +
          "type": "string"
49 +
        },
45 50
        "description": {
46 51
          "type": "string"
47 52
        },
48 53
        "id": {
49 54
          "description": "Stable identifier for this recipe",
50 55
          "type": "string"
51 56
        },
52 57
        "imageUrl": {
53 58
          "description": "An absolute URL to a photograph, already resolved — whether the recipe is private (object storage) or published (a PDS blob on a CDN). Absent when the recipe has no image.",
54 59
          "format": "uri",
55 60
          "type": "string"
56 61
        },
57 62
        "missingCount": {
58 63
          "description": "How many ingredients are not in the house. 0 means everything is in.",
59 64
          "minimum": 0,
60 65
          "type": "integer"
61 66
        },
62 67
        "name": {
63 68
          "type": "string"
64 69
        },
65 70
        "prepTimeMinutes": {
66 71
          "minimum": 0,
67 72
          "type": "integer"
68 73
        },
69 74
        "servings": {
70 75
          "description": "How many the recipe makes. A number; halves are real, so not an integer.",
71 76
          "type": "unknown"
72 77
        },
73 78
        "tags": {
74 79
          "items": {
75 80
            "ref": "#tagRef",
76 81
            "type": "ref"
77 82
          },
78 83
          "type": "array"
79 84
        },
80 85
        "updatedAt": {
81 86
          "format": "datetime",
82 87
          "type": "string"
83 88
        },
84 89
        "url": {
85 90
          "description": "Where to open this recipe in kich",
86 91
          "format": "uri",
87 92
          "type": "string"
88 93
        }
89 94
      },
90 95
      "required": [
91 96
        "id",
92 97
        "name",
93 98
        "servings",
94 99
        "completenessPercent",
95 100
        "url"
96 101
      ],
97 102
      "type": "object"
98 103
    },
99 104
    "tagRef": {
100 105
      "description": "A tag, by id and display name.",
101 106
      "properties": {
102 107
        "id": {
103 108
          "type": "string"
104 109
        },
105 110
        "name": {
106 111
          "type": "string"
107 112
        }
108 113
      },
109 114
      "required": [
110 115
        "id",
111 116
        "name"
112 117
      ],
113 118
      "type": "object"
114 119
    }
115 120
  },
116 121
  "description": "Shared definitions for the recipe namespace.",
117 122
  "id": "io.kich.recipe.defs",
118 123
  "lexicon": 1
119 124
}

Compare Other Versions

Lexicon Garden

@