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

Compare Other Versions

Lexicon Garden

@