am.noz.at.spl.expense

noz.am

Schema Diff

+6 -0

From

CID
bafyreidldkg6ktt...
Indexed At
2026-08-29 22:23 UTC
View this version

To

CID
bafyreiefdql5ryy...
Indexed At
2026-08-29 23:16 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 2 non-breaking changes.

Non-Breaking Changes (2)
  • AddedVertex AddedVertex { vertex_id: "am.noz.at.spl.expense:body.groupId" }
  • AddedEdge AddedEdge { src: "am.noz.at.spl.expense:body", tgt: "am.noz.at.spl.expense:body.groupId", kind: "prop", name: Some("groupId") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "am.noz.at.spl.expense:body.groupId" }

Additional Notes

  • Non-breaking: AddedEdge { src: "am.noz.at.spl.expense:body", tgt: "am.noz.at.spl.expense:body.groupId", kind: "prop", name: Some("groupId") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "An immutable expense revision header. Items are stored in am.noz.at.spl.item records with the same expenseId and revisionId.",
6 6
      "key": "tid",
7 7
      "record": {
8 8
        "properties": {
9 9
          "base": {
10 10
            "description": "The effective revision this revision was based on.",
11 11
            "ref": "lex:am.noz.at.spl.expense#recordRef",
12 12
            "type": "ref"
13 13
          },
14 14
          "category": {
15 15
            "knownValues": [
16 16
              "food",
17 17
              "transport",
18 18
              "accommodation",
19 19
              "entertainment",
20 20
              "groceries",
21 21
              "utilities",
22 22
              "shopping",
23 23
              "other"
24 24
            ],
25 25
            "maxLength": 64,
26 26
            "type": "string"
27 27
          },
28 28
          "createdAt": {
29 29
            "format": "datetime",
30 30
            "type": "string"
31 31
          },
32 32
          "currency": {
33 33
            "description": "Uppercase ISO 4217 currency code.",
34 34
            "maxLength": 3,
35 35
            "minLength": 3,
36 36
            "type": "string"
37 37
          },
38 38
          "description": {
39 39
            "maxGraphemes": 200,
40 40
            "maxLength": 1000,
41 41
            "minLength": 1,
42 42
            "type": "string"
43 43
          },
44 44
          "expenseId": {
45 45
            "description": "Stable application identifier shared by every revision.",
46 46
            "maxLength": 64,
47 47
            "minLength": 1,
48 48
            "type": "string"
49 49
          },
50 +
          "groupId": {
51 +
            "description": "Optional organizational group or trip within the ledger Space. Omitted for ungrouped expenses.",
52 +
            "maxLength": 64,
53 +
            "minLength": 1,
54 +
            "type": "string"
55 +
          },
50 56
          "itemCount": {
51 57
            "maximum": 500,
52 58
            "minimum": 1,
53 59
            "type": "integer"
54 60
          },
55 61
          "merchant": {
56 62
            "maxGraphemes": 120,
57 63
            "maxLength": 500,
58 64
            "type": "string"
59 65
          },
60 66
          "minorUnit": {
61 67
            "maximum": 4,
62 68
            "minimum": 0,
63 69
            "type": "integer"
64 70
          },
65 71
          "notes": {
66 72
            "maxGraphemes": 1000,
67 73
            "maxLength": 4000,
68 74
            "type": "string"
69 75
          },
70 76
          "occurredAt": {
71 77
            "format": "datetime",
72 78
            "type": "string"
73 79
          },
74 80
          "paidBy": {
75 81
            "items": {
76 82
              "ref": "lex:am.noz.at.spl.expense#moneyAllocation",
77 83
              "type": "ref"
78 84
            },
79 85
            "maxLength": 250,
80 86
            "minLength": 1,
81 87
            "type": "array"
82 88
          },
83 89
          "receipt": {
84 90
            "accept": [
85 91
              "image/jpeg",
86 92
              "image/png",
87 93
              "image/webp",
88 94
              "application/pdf"
89 95
            ],
90 96
            "maxSize": 10000000,
91 97
            "type": "blob"
92 98
          },
93 99
          "receiptAlt": {
94 100
            "maxGraphemes": 300,
95 101
            "maxLength": 2000,
96 102
            "type": "string"
97 103
          },
98 104
          "recurringSource": {
99 105
            "format": "at-uri",
100 106
            "type": "string"
101 107
          },
102 108
          "revisionId": {
103 109
            "maxLength": 64,
104 110
            "minLength": 1,
105 111
            "type": "string"
106 112
          },
107 113
          "schemaVersion": {
108 114
            "const": 1,
109 115
            "type": "integer"
110 116
          },
111 117
          "totalMinor": {
112 118
            "description": "Exact total in currency minor units; never a floating-point amount.",
113 119
            "minimum": 1,
114 120
            "type": "integer"
115 121
          },
116 122
          "voided": {
117 123
            "description": "A voiding revision replaces destructive deletion in normal application flows.",
118 124
            "type": "boolean"
119 125
          }
120 126
        },
121 127
        "required": [
122 128
          "schemaVersion",
123 129
          "expenseId",
124 130
          "revisionId",
125 131
          "description",
126 132
          "occurredAt",
127 133
          "createdAt",
128 134
          "currency",
129 135
          "minorUnit",
130 136
          "totalMinor",
131 137
          "paidBy",
132 138
          "itemCount",
133 139
          "voided"
134 140
        ],
135 141
        "type": "object"
136 142
      },
137 143
      "type": "record"
138 144
    },
139 145
    "moneyAllocation": {
140 146
      "properties": {
141 147
        "amountMinor": {
142 148
          "minimum": 0,
143 149
          "type": "integer"
144 150
        },
145 151
        "did": {
146 152
          "format": "did",
147 153
          "type": "string"
148 154
        }
149 155
      },
150 156
      "required": [
151 157
        "did",
152 158
        "amountMinor"
153 159
      ],
154 160
      "type": "object"
155 161
    },
156 162
    "recordRef": {
157 163
      "properties": {
158 164
        "cid": {
159 165
          "format": "cid",
160 166
          "type": "string"
161 167
        },
162 168
        "uri": {
163 169
          "format": "at-uri",
164 170
          "type": "string"
165 171
        }
166 172
      },
167 173
      "required": [
168 174
        "uri",
169 175
        "cid"
170 176
      ],
171 177
      "type": "object"
172 178
    }
173 179
  },
174 180
  "id": "am.noz.at.spl.expense",
175 181
  "lexicon": 1
176 182
}

Compare Other Versions

Lexicon Garden

@