@ingenx-io/valets-schema-mcp-server 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/data/docs/collections/firestore-paths.md +49 -0
  2. package/data/docs/decisions/migrations.md +56 -0
  3. package/data/docs/decisions/summary.md +78 -0
  4. package/data/docs/enums/booking-status.md +26 -0
  5. package/data/docs/enums/customer-payment-status.md +26 -0
  6. package/data/docs/enums/customer-payment-target-type.md +23 -0
  7. package/data/docs/enums/delivery-type.md +23 -0
  8. package/data/docs/enums/event-status.md +30 -0
  9. package/data/docs/enums/fulfillment-status.md +32 -0
  10. package/data/docs/enums/loyalty-transaction-type.md +32 -0
  11. package/data/docs/enums/order-status.md +65 -0
  12. package/data/docs/enums/payment-method.md +36 -0
  13. package/data/docs/enums/payment-proof-status.md +23 -0
  14. package/data/docs/enums/payment-status.md +34 -0
  15. package/data/docs/enums/return-status.md +32 -0
  16. package/data/docs/enums/session-status.md +32 -0
  17. package/data/docs/enums/ticket-status.md +29 -0
  18. package/data/docs/index.md +102 -0
  19. package/data/docs/models/booking-version.md +295 -0
  20. package/data/docs/models/booking.md +1754 -0
  21. package/data/docs/models/customer-payment-allocation.md +336 -0
  22. package/data/docs/models/customer-payment.md +392 -0
  23. package/data/docs/models/customer.md +475 -0
  24. package/data/docs/models/event.md +386 -0
  25. package/data/docs/models/loyalty-config.md +317 -0
  26. package/data/docs/models/loyalty-reward.md +236 -0
  27. package/data/docs/models/loyalty-status.md +328 -0
  28. package/data/docs/models/loyalty-transaction.md +326 -0
  29. package/data/docs/models/metrics-current.md +532 -0
  30. package/data/docs/models/metrics-daily.md +548 -0
  31. package/data/docs/models/metrics-monthly.md +548 -0
  32. package/data/docs/models/order-item.md +361 -0
  33. package/data/docs/models/order.md +1637 -0
  34. package/data/docs/models/payment-summary.md +123 -0
  35. package/data/docs/models/sale.md +540 -0
  36. package/data/docs/models/ticket.md +405 -0
  37. package/data/docs/triggers/event-ticket-triggers.md +204 -0
  38. package/data/docs/triggers/loyalty-automation.md +123 -0
  39. package/data/static/decisions.json +966 -0
  40. package/data/static/llms.txt +1056 -0
  41. package/data/static/openapi.yaml +3090 -0
  42. package/data/static/schemas.json +4055 -0
  43. package/package.json +1 -1
@@ -0,0 +1,317 @@
1
+ ---
2
+ title: "LoyaltyConfig"
3
+ sidebar_label: "LoyaltyConfig"
4
+ sidebar_position: 7
5
+ ---
6
+
7
+ # LoyaltyConfig
8
+
9
+ <details>
10
+ <summary>Example JSON</summary>
11
+
12
+ ```json
13
+ {
14
+ "id": null,
15
+ "isEnabled": true,
16
+ "pointSystem": "SPENDING",
17
+ "pointsPerCurrency": null,
18
+ "pointsPerVisit": null,
19
+ "pointValue": null,
20
+ "minimumRedeemPoints": null,
21
+ "welcomeBonusPoints": null,
22
+ "pointsExpirationDays": "pointsExpirationDays",
23
+ "createdAt": "createdAt",
24
+ "updatedAt": "updatedAt"
25
+ }
26
+ ```
27
+
28
+ </details>
29
+
30
+
31
+ - [1. Property `id`](#id)
32
+ - [2. Property `isEnabled`](#isEnabled)
33
+ - [3. Property `pointSystem`](#pointSystem)
34
+ - [4. ~~Property `pointsPerCurrency`~~](#pointsPerCurrency)
35
+ - [5. Property `pointsPerVisit`](#pointsPerVisit)
36
+ - [6. Property `pointValue`](#pointValue)
37
+ - [7. Property `minimumRedeemPoints`](#minimumRedeemPoints)
38
+ - [8. Property `welcomeBonusPoints`](#welcomeBonusPoints)
39
+ - [9. ~~Property `pointsExpirationDays`~~](#pointsExpirationDays)
40
+ - [9.1. Property `item 0`](#pointsExpirationDays_anyOf_i0)
41
+ - [9.2. Property `item 1`](#pointsExpirationDays_anyOf_i1)
42
+ - [10. Property `createdAt`](#createdAt)
43
+ - [10.1. Property `firestore-timestamp`](#createdAt_anyOf_i0)
44
+ - [10.1.1. Property `_seconds`](#createdAt_anyOf_i0__seconds)
45
+ - [10.1.2. Property `_nanoseconds`](#createdAt_anyOf_i0__nanoseconds)
46
+ - [10.2. Property `item 1`](#createdAt_anyOf_i1)
47
+ - [11. Property `updatedAt`](#updatedAt)
48
+ - [11.1. Property `firestore-timestamp`](#updatedAt_anyOf_i0)
49
+ - [11.2. Property `item 1`](#updatedAt_anyOf_i1)
50
+
51
+ | | |
52
+ | ------------------------- | ---------------------------- |
53
+ | **Type** | `object` |
54
+ | **Required** | No |
55
+ | **Additional properties** | Not allowed |
56
+ | **Defined in** | #/definitions/loyalty-config |
57
+
58
+ **Description:** LoyaltyConfig model (D21). Collection: companies/\{companyId\}/loyaltySettings/config. 1 doc per company. Uses canonical field names per D21 (MIG-06 renames legacy aliases).
59
+
60
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
61
+ | ------------------------------------------------ | ------- | ---------------- | ---------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------- |
62
+ | - [id](#id ) | No | string or null | No | - | (Read-only) Firestore document ID. Singleton doc — typically "config". |
63
+ | + [isEnabled](#isEnabled ) | No | boolean | No | - | - |
64
+ | + [pointSystem](#pointSystem ) | No | enum (of string) | No | - | How points are earned: SPENDING (per currency spent), PRODUCT (per product purchased), or VISIT (per visit). SCREAMING_SNAKE per D04. |
65
+ | - [pointsPerCurrency](#pointsPerCurrency ) | No | number or null | Deprecated | - | [Deprecated alias: pointsPerCurrencyUnit — renamed by MIG-06] |
66
+ | - [pointsPerVisit](#pointsPerVisit ) | No | number or null | No | - | Points earned per visit (when pointSystem is visit). |
67
+ | - [pointValue](#pointValue ) | No | number or null | No | - | Monetary value of one point for redemption. |
68
+ | - [minimumRedeemPoints](#minimumRedeemPoints ) | No | integer or null | No | - | Minimum points balance required before redemption is allowed. |
69
+ | - [welcomeBonusPoints](#welcomeBonusPoints ) | No | integer or null | No | - | One-time points bonus for new loyalty enrollees. |
70
+ | - [pointsExpirationDays](#pointsExpirationDays ) | No | Combination | Deprecated | - | [Deprecated alias: pointsExpiryMonths — renamed and converted months*30 to days by MIG-06] |
71
+ | - [createdAt](#createdAt ) | No | Combination | No | - | (Read-only) Server-generated creation timestamp. |
72
+ | - [updatedAt](#updatedAt ) | No | Combination | No | - | (Read-only) Server-generated update timestamp. |
73
+
74
+ ## <a name="id"></a>1. Property `id`
75
+
76
+ | | |
77
+ | ------------ | ---------------- |
78
+ | **Type** | `string or null` |
79
+ | **Required** | No |
80
+
81
+ **Description:** (Read-only) Firestore document ID. Singleton doc — typically "config".
82
+
83
+ :::warning Server-set
84
+ Do not include in write requests. This field is set exclusively by the server (Firestore trigger or Admin SDK). Clients that send it will have the value silently ignored or may receive a validation error.
85
+ :::
86
+
87
+ ## <a name="isEnabled"></a>2. Property `isEnabled`
88
+
89
+ | | |
90
+ | ------------ | --------- |
91
+ | **Type** | `boolean` |
92
+ | **Required** | Yes |
93
+
94
+ ## <a name="pointSystem"></a>3. Property `pointSystem`
95
+
96
+ | | |
97
+ | ------------ | ------------------ |
98
+ | **Type** | `enum (of string)` |
99
+ | **Required** | Yes |
100
+
101
+ **Description:** How points are earned: SPENDING (per currency spent), PRODUCT (per product purchased), or VISIT (per visit). SCREAMING_SNAKE per D04.
102
+
103
+ Must be one of:
104
+ * "SPENDING"
105
+ * "PRODUCT"
106
+ * "VISIT"
107
+
108
+ ## <a name="pointsPerCurrency"></a>4. ~~Property `pointsPerCurrency`~~
109
+
110
+ | | |
111
+ | -------------- | ---------------- |
112
+ | **Type** | `number or null` |
113
+ | **Required** | No |
114
+ | **Deprecated** |
115
+
116
+ **Description:** [Deprecated alias: pointsPerCurrencyUnit — renamed by MIG-06]
117
+
118
+ :::danger Deprecated
119
+ This field is deprecated. Do not write it in new code.
120
+ :::
121
+
122
+ ## <a name="pointsPerVisit"></a>5. Property `pointsPerVisit`
123
+
124
+ | | |
125
+ | ------------ | ---------------- |
126
+ | **Type** | `number or null` |
127
+ | **Required** | No |
128
+
129
+ **Description:** Points earned per visit (when pointSystem is visit).
130
+
131
+ ## <a name="pointValue"></a>6. Property `pointValue`
132
+
133
+ | | |
134
+ | ------------ | ---------------- |
135
+ | **Type** | `number or null` |
136
+ | **Required** | No |
137
+
138
+ **Description:** Monetary value of one point for redemption.
139
+
140
+ ## <a name="minimumRedeemPoints"></a>7. Property `minimumRedeemPoints`
141
+
142
+ | | |
143
+ | ------------ | ----------------- |
144
+ | **Type** | `integer or null` |
145
+ | **Required** | No |
146
+
147
+ **Description:** Minimum points balance required before redemption is allowed.
148
+
149
+ | Restrictions | |
150
+ | ------------ | ---------------------- |
151
+ | **Minimum** | &ge; -9007199254740991 |
152
+ | **Maximum** | &le; 9007199254740991 |
153
+
154
+ ## <a name="welcomeBonusPoints"></a>8. Property `welcomeBonusPoints`
155
+
156
+ | | |
157
+ | ------------ | ----------------- |
158
+ | **Type** | `integer or null` |
159
+ | **Required** | No |
160
+
161
+ **Description:** One-time points bonus for new loyalty enrollees.
162
+
163
+ | Restrictions | |
164
+ | ------------ | ---------------------- |
165
+ | **Minimum** | &ge; -9007199254740991 |
166
+ | **Maximum** | &le; 9007199254740991 |
167
+
168
+ ## <a name="pointsExpirationDays"></a>9. ~~Property `pointsExpirationDays`~~
169
+
170
+ | | |
171
+ | ------------------------- | ---------------- |
172
+ | **Type** | `combining` |
173
+ | **Required** | No |
174
+ | **Deprecated** |
175
+ | **Additional properties** | Any type allowed |
176
+
177
+ **Description:** [Deprecated alias: pointsExpiryMonths — renamed and converted months*30 to days by MIG-06]
178
+
179
+ | Any of(Option) |
180
+ | ---------------------------------------- |
181
+ | [item 0](#pointsExpirationDays_anyOf_i0) |
182
+ | [item 1](#pointsExpirationDays_anyOf_i1) |
183
+
184
+ ### <a name="pointsExpirationDays_anyOf_i0"></a>9.1. Property `item 0`
185
+
186
+ | | |
187
+ | ------------ | --------- |
188
+ | **Type** | `integer` |
189
+ | **Required** | No |
190
+
191
+ | Restrictions | |
192
+ | ------------ | ---------------------- |
193
+ | **Minimum** | &ge; -9007199254740991 |
194
+ | **Maximum** | &le; 9007199254740991 |
195
+
196
+ ### <a name="pointsExpirationDays_anyOf_i1"></a>9.2. Property `item 1`
197
+
198
+ | | |
199
+ | ------------ | ------ |
200
+ | **Type** | `null` |
201
+ | **Required** | No |
202
+
203
+ :::danger Deprecated
204
+ This field is deprecated. Do not write it in new code.
205
+ :::
206
+
207
+ ## <a name="createdAt"></a>10. Property `createdAt`
208
+
209
+ | | |
210
+ | ------------------------- | ---------------- |
211
+ | **Type** | `combining` |
212
+ | **Required** | No |
213
+ | **Additional properties** | Any type allowed |
214
+
215
+ **Description:** (Read-only) Server-generated creation timestamp.
216
+
217
+ | Any of(Option) |
218
+ | ------------------------------------------ |
219
+ | [firestore-timestamp](#createdAt_anyOf_i0) |
220
+ | [item 1](#createdAt_anyOf_i1) |
221
+
222
+ ### <a name="createdAt_anyOf_i0"></a>10.1. Property `firestore-timestamp`
223
+
224
+ | | |
225
+ | ------------------------- | --------------------------------- |
226
+ | **Type** | `object` |
227
+ | **Required** | No |
228
+ | **Additional properties** | Not allowed |
229
+ | **Defined in** | #/definitions/firestore-timestamp |
230
+
231
+ **Description:** Firestore Timestamp serialized representation
232
+
233
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
234
+ | --------------------------------------------------- | ------- | ------- | ---------- | ---------- | ----------------- |
235
+ | + [_seconds](#createdAt_anyOf_i0__seconds ) | No | integer | No | - | - |
236
+ | + [_nanoseconds](#createdAt_anyOf_i0__nanoseconds ) | No | integer | No | - | - |
237
+
238
+ #### <a name="createdAt_anyOf_i0__seconds"></a>10.1.1. Property `_seconds`
239
+
240
+ | | |
241
+ | ------------ | --------- |
242
+ | **Type** | `integer` |
243
+ | **Required** | Yes |
244
+
245
+ | Restrictions | |
246
+ | ------------ | ---------------------- |
247
+ | **Minimum** | &ge; -9007199254740991 |
248
+ | **Maximum** | &le; 9007199254740991 |
249
+
250
+ #### <a name="createdAt_anyOf_i0__nanoseconds"></a>10.1.2. Property `_nanoseconds`
251
+
252
+ | | |
253
+ | ------------ | --------- |
254
+ | **Type** | `integer` |
255
+ | **Required** | Yes |
256
+
257
+ | Restrictions | |
258
+ | ------------ | ---------------------- |
259
+ | **Minimum** | &ge; -9007199254740991 |
260
+ | **Maximum** | &le; 9007199254740991 |
261
+
262
+ ### <a name="createdAt_anyOf_i1"></a>10.2. Property `item 1`
263
+
264
+ | | |
265
+ | ------------ | ------ |
266
+ | **Type** | `null` |
267
+ | **Required** | No |
268
+
269
+ :::warning Server-set
270
+ Do not include in write requests. This field is set exclusively by the server (Firestore trigger or Admin SDK). Clients that send it will have the value silently ignored or may receive a validation error.
271
+ :::
272
+
273
+ ## <a name="updatedAt"></a>11. Property `updatedAt`
274
+
275
+ | | |
276
+ | ------------------------- | ---------------- |
277
+ | **Type** | `combining` |
278
+ | **Required** | No |
279
+ | **Additional properties** | Any type allowed |
280
+
281
+ **Description:** (Read-only) Server-generated update timestamp.
282
+
283
+ | Any of(Option) |
284
+ | ------------------------------------------ |
285
+ | [firestore-timestamp](#updatedAt_anyOf_i0) |
286
+ | [item 1](#updatedAt_anyOf_i1) |
287
+
288
+ ### <a name="updatedAt_anyOf_i0"></a>11.1. Property `firestore-timestamp`
289
+
290
+ | | |
291
+ | ------------------------- | ----------------------------------------- |
292
+ | **Type** | `object` |
293
+ | **Required** | No |
294
+ | **Additional properties** | Not allowed |
295
+ | **Same definition as** | [createdAt_anyOf_i0](#createdAt_anyOf_i0) |
296
+
297
+ **Description:** Firestore Timestamp serialized representation
298
+
299
+ ### <a name="updatedAt_anyOf_i1"></a>11.2. Property `item 1`
300
+
301
+ | | |
302
+ | ------------ | ------ |
303
+ | **Type** | `null` |
304
+ | **Required** | No |
305
+
306
+ ----------------------------------------------------------------------------------------------------------------------------
307
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-04-06 at 19:27:48 +0000
308
+
309
+ :::warning Server-set
310
+ Do not include in write requests. This field is set exclusively by the server (Firestore trigger or Admin SDK). Clients that send it will have the value silently ignored or may receive a validation error.
311
+ :::
312
+
313
+ ## Related Decisions
314
+
315
+ | Decision | Title |
316
+ |---|---|
317
+ | **D21** | Loyalty config canonical field names |
@@ -0,0 +1,236 @@
1
+ ---
2
+ title: "LoyaltyReward"
3
+ sidebar_label: "LoyaltyReward"
4
+ sidebar_position: 8
5
+ ---
6
+
7
+ # LoyaltyReward
8
+
9
+ <details>
10
+ <summary>Example JSON</summary>
11
+
12
+ ```json
13
+ {
14
+ "id": "bk_abc123def456",
15
+ "name": "Free Braiding Session",
16
+ "description": null,
17
+ "pointsRequired": 200,
18
+ "isActive": true,
19
+ "imageUrl": null,
20
+ "rewardType": null,
21
+ "discountValue": null,
22
+ "productId": null,
23
+ "createdAt": "createdAt",
24
+ "updatedAt": "updatedAt"
25
+ }
26
+ ```
27
+
28
+ </details>
29
+
30
+
31
+ - [1. Property `id`](#id)
32
+ - [2. Property `name`](#name)
33
+ - [3. Property `description`](#description)
34
+ - [4. Property `pointsRequired`](#pointsRequired)
35
+ - [5. Property `isActive`](#isActive)
36
+ - [6. Property `imageUrl`](#imageUrl)
37
+ - [7. Property `rewardType`](#rewardType)
38
+ - [8. Property `discountValue`](#discountValue)
39
+ - [9. Property `productId`](#productId)
40
+ - [10. Property `createdAt`](#createdAt)
41
+ - [10.1. Property `_seconds`](#createdAt__seconds)
42
+ - [10.2. Property `_nanoseconds`](#createdAt__nanoseconds)
43
+ - [11. Property `updatedAt`](#updatedAt)
44
+ - [11.1. Property `firestore-timestamp`](#updatedAt_anyOf_i0)
45
+ - [11.2. Property `item 1`](#updatedAt_anyOf_i1)
46
+
47
+ | | |
48
+ | ------------------------- | ---------------------------- |
49
+ | **Type** | `object` |
50
+ | **Required** | No |
51
+ | **Additional properties** | Not allowed |
52
+ | **Defined in** | #/definitions/loyalty-reward |
53
+
54
+ **Description:** LoyaltyReward model. Collection: companies/\{companyId\}/loyaltyRewards/\{rewardId\}. Reward catalog for point redemption (IG-10).
55
+
56
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
57
+ | ------------------------------------ | ------- | -------------- | ---------- | ------------------------------------ | ------------------------------------------------------------- |
58
+ | + [id](#id ) | No | string | No | - | (Read-only) Firestore document ID. |
59
+ | + [name](#name ) | No | string | No | - | - |
60
+ | - [description](#description ) | No | string or null | No | - | - |
61
+ | + [pointsRequired](#pointsRequired ) | No | integer | No | - | Points cost to redeem this reward. |
62
+ | + [isActive](#isActive ) | No | boolean | No | - | Whether this reward is currently available for redemption. |
63
+ | - [imageUrl](#imageUrl ) | No | string or null | No | - | - |
64
+ | - [rewardType](#rewardType ) | No | string or null | No | - | Category of reward (e.g. discount, free_item, service). |
65
+ | - [discountValue](#discountValue ) | No | number or null | No | - | Discount amount when rewardType is discount. |
66
+ | - [productId](#productId ) | No | string or null | No | - | FK → Product.id. Linked product when rewardType is free_item. |
67
+ | + [createdAt](#createdAt ) | No | object | No | In #/definitions/firestore-timestamp | (Read-only) Server-generated creation timestamp. |
68
+ | - [updatedAt](#updatedAt ) | No | Combination | No | - | (Read-only) Server-generated update timestamp. |
69
+
70
+ ## <a name="id"></a>1. Property `id`
71
+
72
+ | | |
73
+ | ------------ | -------- |
74
+ | **Type** | `string` |
75
+ | **Required** | Yes |
76
+
77
+ **Description:** (Read-only) Firestore document ID.
78
+
79
+ :::warning Server-set
80
+ Do not include in write requests. This field is set exclusively by the server (Firestore trigger or Admin SDK). Clients that send it will have the value silently ignored or may receive a validation error.
81
+ :::
82
+
83
+ ## <a name="name"></a>2. Property `name`
84
+
85
+ | | |
86
+ | ------------ | -------- |
87
+ | **Type** | `string` |
88
+ | **Required** | Yes |
89
+
90
+ ## <a name="description"></a>3. Property `description`
91
+
92
+ | | |
93
+ | ------------ | ---------------- |
94
+ | **Type** | `string or null` |
95
+ | **Required** | No |
96
+
97
+ ## <a name="pointsRequired"></a>4. Property `pointsRequired`
98
+
99
+ | | |
100
+ | ------------ | --------- |
101
+ | **Type** | `integer` |
102
+ | **Required** | Yes |
103
+
104
+ **Description:** Points cost to redeem this reward.
105
+
106
+ | Restrictions | |
107
+ | ------------ | ---------------------- |
108
+ | **Minimum** | &ge; -9007199254740991 |
109
+ | **Maximum** | &le; 9007199254740991 |
110
+
111
+ ## <a name="isActive"></a>5. Property `isActive`
112
+
113
+ | | |
114
+ | ------------ | --------- |
115
+ | **Type** | `boolean` |
116
+ | **Required** | Yes |
117
+
118
+ **Description:** Whether this reward is currently available for redemption.
119
+
120
+ ## <a name="imageUrl"></a>6. Property `imageUrl`
121
+
122
+ | | |
123
+ | ------------ | ---------------- |
124
+ | **Type** | `string or null` |
125
+ | **Required** | No |
126
+
127
+ ## <a name="rewardType"></a>7. Property `rewardType`
128
+
129
+ | | |
130
+ | ------------ | ---------------- |
131
+ | **Type** | `string or null` |
132
+ | **Required** | No |
133
+
134
+ **Description:** Category of reward (e.g. discount, free_item, service).
135
+
136
+ ## <a name="discountValue"></a>8. Property `discountValue`
137
+
138
+ | | |
139
+ | ------------ | ---------------- |
140
+ | **Type** | `number or null` |
141
+ | **Required** | No |
142
+
143
+ **Description:** Discount amount when rewardType is discount.
144
+
145
+ ## <a name="productId"></a>9. Property `productId`
146
+
147
+ | | |
148
+ | ------------ | ---------------- |
149
+ | **Type** | `string or null` |
150
+ | **Required** | No |
151
+
152
+ **Description:** FK → Product.id. Linked product when rewardType is free_item.
153
+
154
+ ## <a name="createdAt"></a>10. Property `createdAt`
155
+
156
+ | | |
157
+ | ------------------------- | --------------------------------- |
158
+ | **Type** | `object` |
159
+ | **Required** | Yes |
160
+ | **Additional properties** | Not allowed |
161
+ | **Defined in** | #/definitions/firestore-timestamp |
162
+
163
+ **Description:** (Read-only) Server-generated creation timestamp.
164
+
165
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
166
+ | ------------------------------------------ | ------- | ------- | ---------- | ---------- | ----------------- |
167
+ | + [_seconds](#createdAt__seconds ) | No | integer | No | - | - |
168
+ | + [_nanoseconds](#createdAt__nanoseconds ) | No | integer | No | - | - |
169
+
170
+ ### <a name="createdAt__seconds"></a>10.1. Property `_seconds`
171
+
172
+ | | |
173
+ | ------------ | --------- |
174
+ | **Type** | `integer` |
175
+ | **Required** | Yes |
176
+
177
+ | Restrictions | |
178
+ | ------------ | ---------------------- |
179
+ | **Minimum** | &ge; -9007199254740991 |
180
+ | **Maximum** | &le; 9007199254740991 |
181
+
182
+ ### <a name="createdAt__nanoseconds"></a>10.2. Property `_nanoseconds`
183
+
184
+ | | |
185
+ | ------------ | --------- |
186
+ | **Type** | `integer` |
187
+ | **Required** | Yes |
188
+
189
+ | Restrictions | |
190
+ | ------------ | ---------------------- |
191
+ | **Minimum** | &ge; -9007199254740991 |
192
+ | **Maximum** | &le; 9007199254740991 |
193
+
194
+ :::warning Server-set
195
+ Do not include in write requests. This field is set exclusively by the server (Firestore trigger or Admin SDK). Clients that send it will have the value silently ignored or may receive a validation error.
196
+ :::
197
+
198
+ ## <a name="updatedAt"></a>11. Property `updatedAt`
199
+
200
+ | | |
201
+ | ------------------------- | ---------------- |
202
+ | **Type** | `combining` |
203
+ | **Required** | No |
204
+ | **Additional properties** | Any type allowed |
205
+
206
+ **Description:** (Read-only) Server-generated update timestamp.
207
+
208
+ | Any of(Option) |
209
+ | ------------------------------------------ |
210
+ | [firestore-timestamp](#updatedAt_anyOf_i0) |
211
+ | [item 1](#updatedAt_anyOf_i1) |
212
+
213
+ ### <a name="updatedAt_anyOf_i0"></a>11.1. Property `firestore-timestamp`
214
+
215
+ | | |
216
+ | ------------------------- | ----------------------- |
217
+ | **Type** | `object` |
218
+ | **Required** | No |
219
+ | **Additional properties** | Not allowed |
220
+ | **Same definition as** | [createdAt](#createdAt) |
221
+
222
+ **Description:** Firestore Timestamp serialized representation
223
+
224
+ ### <a name="updatedAt_anyOf_i1"></a>11.2. Property `item 1`
225
+
226
+ | | |
227
+ | ------------ | ------ |
228
+ | **Type** | `null` |
229
+ | **Required** | No |
230
+
231
+ ----------------------------------------------------------------------------------------------------------------------------
232
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-04-06 at 19:27:48 +0000
233
+
234
+ :::warning Server-set
235
+ Do not include in write requests. This field is set exclusively by the server (Firestore trigger or Admin SDK). Clients that send it will have the value silently ignored or may receive a validation error.
236
+ :::