@ingenx-io/valets-schema-mcp-server 0.2.6 → 0.2.7

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 (82) hide show
  1. package/data/docs/collections/firestore-paths.md +20 -0
  2. package/data/docs/enums/app-status.md +1 -1
  3. package/data/docs/enums/attention-status.md +1 -1
  4. package/data/docs/enums/booking-status.md +1 -1
  5. package/data/docs/enums/contract-status.md +1 -1
  6. package/data/docs/enums/customer-payment-status.md +1 -1
  7. package/data/docs/enums/customer-payment-target-type.md +1 -1
  8. package/data/docs/enums/delivery-type.md +1 -1
  9. package/data/docs/enums/deployment-link-type.md +1 -1
  10. package/data/docs/enums/event-status.md +1 -1
  11. package/data/docs/enums/expense-payment-status.md +24 -0
  12. package/data/docs/enums/fulfillment-status.md +2 -2
  13. package/data/docs/enums/loyalty-transaction-type.md +2 -2
  14. package/data/docs/enums/milestone-status.md +2 -2
  15. package/data/docs/enums/notification-channel.md +2 -2
  16. package/data/docs/enums/notification-entity-type.md +2 -2
  17. package/data/docs/enums/notification-status.md +2 -2
  18. package/data/docs/enums/order-status.md +2 -2
  19. package/data/docs/enums/outbound-message-format.md +2 -2
  20. package/data/docs/enums/outbound-message-purpose.md +2 -2
  21. package/data/docs/enums/outbound-message-status.md +2 -2
  22. package/data/docs/enums/payment-method.md +4 -3
  23. package/data/docs/enums/payment-proof-status.md +2 -2
  24. package/data/docs/enums/payment-status.md +2 -2
  25. package/data/docs/enums/pending-issue.md +2 -2
  26. package/data/docs/enums/return-status.md +2 -2
  27. package/data/docs/enums/session-status.md +2 -2
  28. package/data/docs/enums/site-status.md +2 -2
  29. package/data/docs/enums/stocktake-frequency.md +2 -2
  30. package/data/docs/enums/stocktake-item-status.md +2 -2
  31. package/data/docs/enums/stocktake-status.md +2 -2
  32. package/data/docs/enums/ticket-status.md +2 -2
  33. package/data/docs/enums/waba-label.md +2 -2
  34. package/data/docs/enums/whatsapp-button-sub-type.md +2 -2
  35. package/data/docs/enums/whatsapp-template-component.md +2 -2
  36. package/data/docs/enums/whatsapp-template-status.md +2 -2
  37. package/data/docs/index.md +6 -3
  38. package/data/docs/models/allowed-user.md +1 -1
  39. package/data/docs/models/analytics-backfill.md +1 -1
  40. package/data/docs/models/analytics-daily.md +1 -1
  41. package/data/docs/models/analytics-event.md +1 -1
  42. package/data/docs/models/analytics-hourly.md +1 -1
  43. package/data/docs/models/app-payment.md +1 -1
  44. package/data/docs/models/app.md +1 -1
  45. package/data/docs/models/booking-version.md +1 -1
  46. package/data/docs/models/booking.md +1 -1
  47. package/data/docs/models/contract.md +1 -1
  48. package/data/docs/models/customer-payment-allocation.md +1 -1
  49. package/data/docs/models/customer-payment.md +22 -21
  50. package/data/docs/models/customer.md +1 -1
  51. package/data/docs/models/event.md +1 -1
  52. package/data/docs/models/expense.md +434 -0
  53. package/data/docs/models/loyalty-config.md +2 -2
  54. package/data/docs/models/loyalty-reward.md +2 -2
  55. package/data/docs/models/loyalty-status.md +2 -2
  56. package/data/docs/models/loyalty-transaction.md +2 -2
  57. package/data/docs/models/magic-link-request.md +2 -2
  58. package/data/docs/models/metrics-current.md +22 -2
  59. package/data/docs/models/metrics-daily.md +92 -41
  60. package/data/docs/models/metrics-monthly.md +22 -2
  61. package/data/docs/models/notification-record.md +2 -2
  62. package/data/docs/models/order-item.md +2 -2
  63. package/data/docs/models/order.md +56 -55
  64. package/data/docs/models/outbound-payment-allocation.md +2 -2
  65. package/data/docs/models/outbound-payment.md +3 -2
  66. package/data/docs/models/payment-webhook-delivery.md +321 -0
  67. package/data/docs/models/payment-webhook-endpoint.md +2 -2
  68. package/data/docs/models/sale.md +2 -2
  69. package/data/docs/models/site-payment.md +2 -2
  70. package/data/docs/models/site.md +2 -2
  71. package/data/docs/models/stocktake-item.md +2 -2
  72. package/data/docs/models/stocktake.md +2 -2
  73. package/data/docs/models/ticket.md +2 -2
  74. package/data/docs/models/user.md +2 -2
  75. package/data/docs/models/whatsapp-inbound-message.md +2 -2
  76. package/data/docs/models/whatsapp-outbound-lifecycle-event.md +2 -2
  77. package/data/docs/models/whatsapp-outbound-message.md +2 -2
  78. package/data/docs/models/whatsapp-template.md +2 -2
  79. package/data/static/llms.txt +97 -5
  80. package/data/static/openapi.yaml +370 -9
  81. package/data/static/schemas.json +347 -9
  82. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "LoyaltyReward"
3
3
  sidebar_label: "LoyaltyReward"
4
- sidebar_position: 16
4
+ sidebar_position: 17
5
5
  ---
6
6
 
7
7
  # LoyaltyReward
@@ -229,7 +229,7 @@ Do not include in write requests. This field is set exclusively by the server (F
229
229
  | **Required** | No |
230
230
 
231
231
  ----------------------------------------------------------------------------------------------------------------------------
232
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:38:45 +0000
232
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:28 +0000
233
233
 
234
234
  :::warning Server-set
235
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.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "LoyaltyStatus"
3
3
  sidebar_label: "LoyaltyStatus"
4
- sidebar_position: 17
4
+ sidebar_position: 18
5
5
  ---
6
6
 
7
7
  # LoyaltyStatus
@@ -315,7 +315,7 @@ Do not include in write requests. This field is set exclusively by the server (F
315
315
  | **Required** | No |
316
316
 
317
317
  ----------------------------------------------------------------------------------------------------------------------------
318
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:38:45 +0000
318
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:28 +0000
319
319
 
320
320
  :::warning Server-set
321
321
  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.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "LoyaltyTransaction"
3
3
  sidebar_label: "LoyaltyTransaction"
4
- sidebar_position: 18
4
+ sidebar_position: 19
5
5
  ---
6
6
 
7
7
  # LoyaltyTransaction
@@ -313,7 +313,7 @@ Set at creation only. This field cannot be modified after the document is create
313
313
  **Description:** (Immutable, Denormalized) From User display name at creation time.
314
314
 
315
315
  ----------------------------------------------------------------------------------------------------------------------------
316
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:38:45 +0000
316
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:28 +0000
317
317
 
318
318
  :::info Immutable
319
319
  Set at creation only. This field cannot be modified after the document is created. Include it in CREATE payloads; omit it (or leave unchanged) in UPDATE payloads.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "MagicLinkRequest"
3
3
  sidebar_label: "MagicLinkRequest"
4
- sidebar_position: 19
4
+ sidebar_position: 20
5
5
  ---
6
6
 
7
7
  # MagicLinkRequest
@@ -282,4 +282,4 @@ Set at creation only. This field cannot be modified after the document is create
282
282
  | **Required** | No |
283
283
 
284
284
  ----------------------------------------------------------------------------------------------------------------------------
285
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:38:45 +0000
285
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:28 +0000
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "MetricsCurrent"
3
3
  sidebar_label: "MetricsCurrent"
4
- sidebar_position: 20
4
+ sidebar_position: 21
5
5
  ---
6
6
 
7
7
  # MetricsCurrent
@@ -172,6 +172,10 @@ Do not include in write requests. This field is set exclusively by the server (F
172
172
  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.
173
173
  :::
174
174
 
175
+ :::note
176
+ Firestore REST API v1 writes integerValue when the stored value is whole (e.g. 0), doubleValue when fractional (e.g. 82.17). Admin SDK smooths this to a JS number; REST clients must coerce the union (#11).
177
+ :::
178
+
175
179
  ## <a name="todayPurchasesCount"></a>4. Property `todayPurchasesCount`
176
180
 
177
181
  | | |
@@ -216,6 +220,10 @@ Do not include in write requests. This field is set exclusively by the server (F
216
220
  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.
217
221
  :::
218
222
 
223
+ :::note
224
+ Firestore REST API v1 writes integerValue when whole (e.g. 10070), doubleValue when fractional (e.g. 10006.5). Admin SDK smooths this; REST clients must coerce (#11).
225
+ :::
226
+
219
227
  ## <a name="monthlyRevenue"></a>7. Property `monthlyRevenue`
220
228
 
221
229
  | | |
@@ -229,6 +237,10 @@ Do not include in write requests. This field is set exclusively by the server (F
229
237
  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.
230
238
  :::
231
239
 
240
+ :::note
241
+ Observed as integerValue on all sampled tenants (whole XOF amounts). Will be doubleValue if fractional. REST clients must coerce (#11).
242
+ :::
243
+
232
244
  ## <a name="monthlyPurchasesCount"></a>8. Property `monthlyPurchasesCount`
233
245
 
234
246
  | | |
@@ -322,6 +334,10 @@ Do not include in write requests. This field is set exclusively by the server (F
322
334
  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.
323
335
  :::
324
336
 
337
+ :::note
338
+ Observed as integerValue "0" on all sampled tenants. Will be doubleValue if fractional payments occur. REST clients must coerce (#11).
339
+ :::
340
+
325
341
  ## <a name="todayRevenue"></a>14. Property `todayRevenue`
326
342
 
327
343
  | | |
@@ -438,6 +454,10 @@ Do not include in write requests. This field is set exclusively by the server (F
438
454
  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.
439
455
  :::
440
456
 
457
+ :::note
458
+ Observed as integerValue "0" on all tenants (no reviews yet). Will be doubleValue once real ratings exist. REST clients must coerce (#11).
459
+ :::
460
+
441
461
  ## <a name="lowStockItemsCount"></a>21. Property `lowStockItemsCount`
442
462
 
443
463
  | | |
@@ -657,7 +677,7 @@ Do not include in write requests. This field is set exclusively by the server (F
657
677
  | **Maximum** | &le; 9007199254740991 |
658
678
 
659
679
  ----------------------------------------------------------------------------------------------------------------------------
660
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:38:45 +0000
680
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:28 +0000
661
681
 
662
682
  :::warning Server-set
663
683
  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.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "MetricsDaily"
3
3
  sidebar_label: "MetricsDaily"
4
- sidebar_position: 21
4
+ sidebar_position: 22
5
5
  ---
6
6
 
7
7
  # MetricsDaily
@@ -77,6 +77,8 @@ sidebar_position: 21
77
77
  - [27. Property `onHoldOrdersCount`](#onHoldOrdersCount)
78
78
  - [28. Property `paymentsByMethod`](#paymentsByMethod)
79
79
  - [28.1. Property `additionalProperties`](#paymentsByMethod_additionalProperties)
80
+ - [28.1.1. Property `total`](#paymentsByMethod_additionalProperties_total)
81
+ - [28.1.2. Property `count`](#paymentsByMethod_additionalProperties_count)
80
82
  - [29. Property `computedForDay`](#computedForDay)
81
83
  - [30. Property `generatedAt`](#generatedAt)
82
84
  - [30.1. Property `_seconds`](#generatedAt__seconds)
@@ -90,41 +92,41 @@ sidebar_position: 21
90
92
  | **Additional properties** | Not allowed |
91
93
  | **Defined in** | #/definitions/metrics-daily |
92
94
 
93
- **Description:** Daily metrics snapshot. Collection: companies/\{companyId\}/metrics_daily/\{YYYY-MM-DD\}. Same fields as MetricsCurrent plus `date`. Written by computeDailyCompanyMetrics cron (02:00 UTC) and inline after full recalcs.
94
-
95
- | Property | Pattern | Type | Deprecated | Definition | Title/Description |
96
- | ---------------------------------------------------------------------------- | ------- | --------------- | ---------- | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
97
- | + [todayOrdersCount](#todayOrdersCount ) | No | integer | No | - | (Read-only) Orders created today (UTC). Resets at midnight. |
98
- | + [pendingOrdersCount](#pendingOrdersCount ) | No | integer | No | - | (Read-only) Orders currently in PENDING status (all-time cumulative). Corrected by full recalc on order updates. |
99
- | + [orderCompletionRate30d](#orderCompletionRate30d ) | No | number | No | - | (Read-only) Percentage of orders completed or delivered in the last 30 days. Always full recalc. |
100
- | + [todayPurchasesCount](#todayPurchasesCount ) | No | integer | No | - | (Read-only) Purchases created today (UTC). Resets at midnight. |
101
- | + [todayPurchasesSum](#todayPurchasesSum ) | No | number | No | - | (Read-only) Total value of purchases created today (UTC). Resets at midnight. |
102
- | + [averagePurchaseAmount](#averagePurchaseAmount ) | No | number | No | - | (Read-only) Average purchase value across last 200 purchases (rolling, not time-windowed). |
103
- | + [monthlyRevenue](#monthlyRevenue ) | No | number | No | - | (Read-only) Total purchase value in the current calendar month (UTC). |
104
- | + [monthlyPurchasesCount](#monthlyPurchasesCount ) | No | integer | No | - | (Read-only) Number of purchases in the current calendar month (UTC). |
105
- | + [todayBookingsCount](#todayBookingsCount ) | No | integer | No | - | (Read-only) Bookings with date == today AND status in [PENDING, CONFIRMED]. Resets at midnight. |
106
- | + [bookingsCreatedToday](#bookingsCreatedToday ) | No | integer | No | - | (Read-only) Bookings with createdAt today (all statuses). Resets at midnight. |
107
- | + [todayBookingsConfirmedAmount](#todayBookingsConfirmedAmount ) | No | number | No | - | (Read-only) Sum of totalAmount for bookings created today with status CONFIRMED or COMPLETED. Resets at midnight. |
108
- | + [monthlyBookingsConfirmedAmount](#monthlyBookingsConfirmedAmount ) | No | number | No | - | (Read-only) Sum of totalAmount for bookings created this month with status CONFIRMED or COMPLETED. |
109
- | + [todayCollectedAmount](#todayCollectedAmount ) | No | number | No | - | (Read-only) Sum of totalAmount for bookings where PAYMENT_PAID_AT is today. Resets at midnight. |
110
- | + [todayRevenue](#todayRevenue ) | No | number | No | - | (Read-only) Sum of totalAmount for COMPLETED bookings where startDate == endDate == today (numeric YYYYMMDD). Resets at midnight. |
111
- | + [bookingsPendingPaymentVerification](#bookingsPendingPaymentVerification ) | No | integer | No | - | (Read-only) Bookings with status PENDING/CANCELLATION_REQUESTED and a payment proof uploaded but not yet verified. Current state, always full recalc. |
112
- | + [bookingsPendingValidation](#bookingsPendingValidation ) | No | integer | No | - | (Read-only) PENDING bookings with startDate within ±30 days of today. Rolling window, always full recalc. |
113
- | + [bookingsPendingValidation24h](#bookingsPendingValidation24h ) | No | integer | No | - | (Read-only) PENDING bookings created in the last 24h with startDate &gt;= tomorrow. Always full recalc. |
114
- | + [customersCount](#customersCount ) | No | integer | No | - | (Read-only) Total customer count (all-time cumulative). |
115
- | + [newCustomersThisMonth](#newCustomersThisMonth ) | No | integer | No | - | (Read-only) Customers with createdAt in the current calendar month (UTC). |
116
- | + [averageRating](#averageRating ) | No | number | No | - | (Read-only) Average rating from the last 200 reviews (rolling). Always full recalc. |
117
- | + [lowStockItemsCount](#lowStockItemsCount ) | No | integer | No | - | (Read-only) Active stock items where currentQuantity &lt;= minimumQuantity. Current state, always full recalc. |
118
- | + [activeRecurringPaymentsCount](#activeRecurringPaymentsCount ) | No | integer | No | - | (Read-only) Recurring payments with status ACTIVE. Current state, always full recalc. |
119
- | + [monthlyRecurringRevenue](#monthlyRecurringRevenue ) | No | number | No | - | (Read-only) Sum of amount for ACTIVE + MONTHLY recurring payments. Always full recalc. |
120
- | - [escalatedOrdersCount](#escalatedOrdersCount ) | No | integer or null | No | - | (Read-only, Optional) Orders currently in an escalated state. Present once the current aggregator rewrites the document. |
121
- | - [staleOrdersCount](#staleOrdersCount ) | No | integer or null | No | - | (Read-only, Optional) Orders that have been in an incomplete status beyond the stale threshold. |
122
- | - [staleBookingsCount](#staleBookingsCount ) | No | integer or null | No | - | (Read-only, Optional) Bookings that have been in an incomplete status beyond the stale threshold. |
123
- | - [onHoldOrdersCount](#onHoldOrdersCount ) | No | integer or null | No | - | (Read-only, Optional) Orders currently in an on-hold state. |
124
- | - [paymentsByMethod](#paymentsByMethod ) | No | object or null | No | - | (Read-only, Optional) Map of PaymentMethod total amount for the current day. Empty map \{\} until first payment. |
125
- | + [computedForDay](#computedForDay ) | No | string | No | - | (Read-only) YYYY-MM-DD string indicating which day these metrics reflect. Used to detect day boundaries and trigger midnight resets. |
126
- | + [generatedAt](#generatedAt ) | No | object | No | In #/definitions/firestore-timestamp | (Read-only) Server timestamp of the last metrics write. |
127
- | + [date](#date ) | No | string | No | - | (Read-only) YYYY-MM-DD document ID repeated as a field. Identifies the day this snapshot covers. |
95
+ **Description:** Daily metrics snapshot. Collection: companies/\{companyId\}/metrics_daily/\{YYYY-MM-DD\}. Same fields as MetricsCurrent plus `date`. Written by computeDailyCompanyMetrics cron (02:00 UTC) when the company had activity that day; zero-activity days may produce no document (#9).
96
+
97
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
98
+ | ---------------------------------------------------------------------------- | ------- | --------------- | ---------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
99
+ | + [todayOrdersCount](#todayOrdersCount ) | No | integer | No | - | (Read-only) Orders created today (UTC). Resets at midnight. |
100
+ | + [pendingOrdersCount](#pendingOrdersCount ) | No | integer | No | - | (Read-only) Orders currently in PENDING status (all-time cumulative). Corrected by full recalc on order updates. |
101
+ | + [orderCompletionRate30d](#orderCompletionRate30d ) | No | number | No | - | (Read-only) Percentage of orders completed or delivered in the last 30 days. Always full recalc. |
102
+ | + [todayPurchasesCount](#todayPurchasesCount ) | No | integer | No | - | (Read-only) Purchases created today (UTC). Resets at midnight. |
103
+ | + [todayPurchasesSum](#todayPurchasesSum ) | No | number | No | - | (Read-only) Total value of purchases created today (UTC). Resets at midnight. |
104
+ | + [averagePurchaseAmount](#averagePurchaseAmount ) | No | number | No | - | (Read-only) Average purchase value across last 200 purchases (rolling, not time-windowed). |
105
+ | + [monthlyRevenue](#monthlyRevenue ) | No | number | No | - | (Read-only) Total purchase value in the current calendar month (UTC). |
106
+ | + [monthlyPurchasesCount](#monthlyPurchasesCount ) | No | integer | No | - | (Read-only) Number of purchases in the current calendar month (UTC). |
107
+ | + [todayBookingsCount](#todayBookingsCount ) | No | integer | No | - | (Read-only) Bookings with date == today AND status in [PENDING, CONFIRMED]. Resets at midnight. |
108
+ | + [bookingsCreatedToday](#bookingsCreatedToday ) | No | integer | No | - | (Read-only) Bookings with createdAt today (all statuses). Resets at midnight. |
109
+ | + [todayBookingsConfirmedAmount](#todayBookingsConfirmedAmount ) | No | number | No | - | (Read-only) Sum of totalAmount for bookings created today with status CONFIRMED or COMPLETED. Resets at midnight. |
110
+ | + [monthlyBookingsConfirmedAmount](#monthlyBookingsConfirmedAmount ) | No | number | No | - | (Read-only) Sum of totalAmount for bookings created this month with status CONFIRMED or COMPLETED. |
111
+ | + [todayCollectedAmount](#todayCollectedAmount ) | No | number | No | - | (Read-only) Sum of totalAmount for bookings where PAYMENT_PAID_AT is today. Resets at midnight. |
112
+ | + [todayRevenue](#todayRevenue ) | No | number | No | - | (Read-only) Sum of totalAmount for COMPLETED bookings where startDate == endDate == today (numeric YYYYMMDD). Resets at midnight. |
113
+ | + [bookingsPendingPaymentVerification](#bookingsPendingPaymentVerification ) | No | integer | No | - | (Read-only) Bookings with status PENDING/CANCELLATION_REQUESTED and a payment proof uploaded but not yet verified. Current state, always full recalc. |
114
+ | + [bookingsPendingValidation](#bookingsPendingValidation ) | No | integer | No | - | (Read-only) PENDING bookings with startDate within ±30 days of today. Rolling window, always full recalc. |
115
+ | + [bookingsPendingValidation24h](#bookingsPendingValidation24h ) | No | integer | No | - | (Read-only) PENDING bookings created in the last 24h with startDate &gt;= tomorrow. Always full recalc. |
116
+ | + [customersCount](#customersCount ) | No | integer | No | - | (Read-only) Total customer count (all-time cumulative). |
117
+ | + [newCustomersThisMonth](#newCustomersThisMonth ) | No | integer | No | - | (Read-only) Customers with createdAt in the current calendar month (UTC). |
118
+ | + [averageRating](#averageRating ) | No | number | No | - | (Read-only) Average rating from the last 200 reviews (rolling). Always full recalc. |
119
+ | + [lowStockItemsCount](#lowStockItemsCount ) | No | integer | No | - | (Read-only) Active stock items where currentQuantity &lt;= minimumQuantity. Current state, always full recalc. |
120
+ | + [activeRecurringPaymentsCount](#activeRecurringPaymentsCount ) | No | integer | No | - | (Read-only) Recurring payments with status ACTIVE. Current state, always full recalc. |
121
+ | + [monthlyRecurringRevenue](#monthlyRecurringRevenue ) | No | number | No | - | (Read-only) Sum of amount for ACTIVE + MONTHLY recurring payments. Always full recalc. |
122
+ | - [escalatedOrdersCount](#escalatedOrdersCount ) | No | integer or null | No | - | (Read-only, Optional) Orders currently in an escalated state. Present once the current aggregator rewrites the document. |
123
+ | - [staleOrdersCount](#staleOrdersCount ) | No | integer or null | No | - | (Read-only, Optional) Orders that have been in an incomplete status beyond the stale threshold. |
124
+ | - [staleBookingsCount](#staleBookingsCount ) | No | integer or null | No | - | (Read-only, Optional) Bookings that have been in an incomplete status beyond the stale threshold. |
125
+ | - [onHoldOrdersCount](#onHoldOrdersCount ) | No | integer or null | No | - | (Read-only, Optional) Orders currently in an on-hold state. |
126
+ | - [paymentsByMethod](#paymentsByMethod ) | No | object or null | No | - | (Read-only, Optional) Payment breakdown by method for the day. Keys are PaymentMethod values (or legacy short code OM). Value is \{ total: XOF amount, count: number of payments \}. |
127
+ | + [computedForDay](#computedForDay ) | No | string | No | - | (Read-only) YYYY-MM-DD string indicating which day these metrics reflect. Used to detect day boundaries and trigger midnight resets. |
128
+ | + [generatedAt](#generatedAt ) | No | object | No | In #/definitions/firestore-timestamp | (Read-only) Server timestamp of the last metrics write. |
129
+ | + [date](#date ) | No | string | No | - | (Read-only) YYYY-MM-DD document ID repeated as a field. Identifies the day this snapshot covers. |
128
130
 
129
131
  ## <a name="todayOrdersCount"></a>1. Property `todayOrdersCount`
130
132
 
@@ -175,6 +177,10 @@ Do not include in write requests. This field is set exclusively by the server (F
175
177
  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.
176
178
  :::
177
179
 
180
+ :::note
181
+ Firestore REST API v1 writes integerValue when the stored value is whole (e.g. 0), doubleValue when fractional (e.g. 82.17). Admin SDK smooths this to a JS number; REST clients must coerce the union (#11).
182
+ :::
183
+
178
184
  ## <a name="todayPurchasesCount"></a>4. Property `todayPurchasesCount`
179
185
 
180
186
  | | |
@@ -219,6 +225,10 @@ Do not include in write requests. This field is set exclusively by the server (F
219
225
  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.
220
226
  :::
221
227
 
228
+ :::note
229
+ Firestore REST API v1 writes integerValue when whole (e.g. 10070), doubleValue when fractional (e.g. 10006.5). Admin SDK smooths this; REST clients must coerce (#11).
230
+ :::
231
+
222
232
  ## <a name="monthlyRevenue"></a>7. Property `monthlyRevenue`
223
233
 
224
234
  | | |
@@ -232,6 +242,10 @@ Do not include in write requests. This field is set exclusively by the server (F
232
242
  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.
233
243
  :::
234
244
 
245
+ :::note
246
+ Observed as integerValue on all sampled tenants (whole XOF amounts). Will be doubleValue if fractional. REST clients must coerce (#11).
247
+ :::
248
+
235
249
  ## <a name="monthlyPurchasesCount"></a>8. Property `monthlyPurchasesCount`
236
250
 
237
251
  | | |
@@ -325,6 +339,10 @@ Do not include in write requests. This field is set exclusively by the server (F
325
339
  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.
326
340
  :::
327
341
 
342
+ :::note
343
+ Observed as integerValue "0" on all sampled tenants. Will be doubleValue if fractional payments occur. REST clients must coerce (#11).
344
+ :::
345
+
328
346
  ## <a name="todayRevenue"></a>14. Property `todayRevenue`
329
347
 
330
348
  | | |
@@ -441,6 +459,10 @@ Do not include in write requests. This field is set exclusively by the server (F
441
459
  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.
442
460
  :::
443
461
 
462
+ :::note
463
+ Observed as integerValue "0" on all tenants (no reviews yet). Will be doubleValue once real ratings exist. REST clients must coerce (#11).
464
+ :::
465
+
444
466
  ## <a name="lowStockItemsCount"></a>21. Property `lowStockItemsCount`
445
467
 
446
468
  | | |
@@ -585,25 +607,54 @@ Absent on tenants whose metrics/current was last written before aggregator v2. B
585
607
  | **Type** | `object or null` |
586
608
  | **Required** | No |
587
609
 
588
- **Description:** (Read-only, Optional) Map of PaymentMethod total amount for the current day. Empty map \{\} until first payment.
610
+ **Description:** (Read-only, Optional) Payment breakdown by method for the day. Keys are PaymentMethod values (or legacy short code OM). Value is \{ total: XOF amount, count: number of payments \}.
589
611
 
590
612
  | Property | Pattern | Type | Deprecated | Definition | Title/Description |
591
613
  | --------------------------------------------- | ------- | ------ | ---------- | ---------- | ----------------- |
592
- | - [](#paymentsByMethod_additionalProperties ) | No | number | No | - | - |
614
+ | - [](#paymentsByMethod_additionalProperties ) | No | object | No | - | - |
593
615
 
594
616
  ### <a name="paymentsByMethod_additionalProperties"></a>28.1. Property `additionalProperties`
595
617
 
618
+ | | |
619
+ | ------------------------- | ----------- |
620
+ | **Type** | `object` |
621
+ | **Required** | No |
622
+ | **Additional properties** | Not allowed |
623
+
624
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
625
+ | -------------------------------------------------------- | ------- | ------- | ---------- | ---------- | -------------------------------------------------------------- |
626
+ | + [total](#paymentsByMethod_additionalProperties_total ) | No | number | No | - | Sum of payment amounts for this method on the given day (XOF). |
627
+ | + [count](#paymentsByMethod_additionalProperties_count ) | No | integer | No | - | Number of payments using this method on the given day. |
628
+
629
+ #### <a name="paymentsByMethod_additionalProperties_total"></a>28.1.1. Property `total`
630
+
596
631
  | | |
597
632
  | ------------ | -------- |
598
633
  | **Type** | `number` |
599
- | **Required** | No |
634
+ | **Required** | Yes |
635
+
636
+ **Description:** Sum of payment amounts for this method on the given day (XOF).
637
+
638
+ #### <a name="paymentsByMethod_additionalProperties_count"></a>28.1.2. Property `count`
639
+
640
+ | | |
641
+ | ------------ | --------- |
642
+ | **Type** | `integer` |
643
+ | **Required** | Yes |
644
+
645
+ **Description:** Number of payments using this method on the given day.
646
+
647
+ | Restrictions | |
648
+ | ------------ | ---------------------- |
649
+ | **Minimum** | &ge; -9007199254740991 |
650
+ | **Maximum** | &le; 9007199254740991 |
600
651
 
601
652
  :::warning Server-set
602
653
  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.
603
654
  :::
604
655
 
605
656
  :::note
606
- Always \{\} until the first real payment is recorded. Present on all tenants once rewritten by current aggregator (#8).
657
+ Map keys use short codes in practice (OM, CASH, WAVE) — OM is a non-canonical alias for ORANGE_MONEY emitted by the metrics writer (#21). Value shape \{ total, count \} differs from MetricsCurrent.paymentsByMethod (bare number).
607
658
  :::
608
659
 
609
660
  ## <a name="computedForDay"></a>29. Property `computedForDay`
@@ -673,7 +724,7 @@ Do not include in write requests. This field is set exclusively by the server (F
673
724
  **Description:** (Read-only) YYYY-MM-DD document ID repeated as a field. Identifies the day this snapshot covers.
674
725
 
675
726
  ----------------------------------------------------------------------------------------------------------------------------
676
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:38:45 +0000
727
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:28 +0000
677
728
 
678
729
  :::warning Server-set
679
730
  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.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "MetricsMonthly"
3
3
  sidebar_label: "MetricsMonthly"
4
- sidebar_position: 22
4
+ sidebar_position: 23
5
5
  ---
6
6
 
7
7
  # MetricsMonthly
@@ -175,6 +175,10 @@ Do not include in write requests. This field is set exclusively by the server (F
175
175
  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.
176
176
  :::
177
177
 
178
+ :::note
179
+ Firestore REST API v1 writes integerValue when the stored value is whole (e.g. 0), doubleValue when fractional (e.g. 82.17). Admin SDK smooths this to a JS number; REST clients must coerce the union (#11).
180
+ :::
181
+
178
182
  ## <a name="todayPurchasesCount"></a>4. Property `todayPurchasesCount`
179
183
 
180
184
  | | |
@@ -219,6 +223,10 @@ Do not include in write requests. This field is set exclusively by the server (F
219
223
  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.
220
224
  :::
221
225
 
226
+ :::note
227
+ Firestore REST API v1 writes integerValue when whole (e.g. 10070), doubleValue when fractional (e.g. 10006.5). Admin SDK smooths this; REST clients must coerce (#11).
228
+ :::
229
+
222
230
  ## <a name="monthlyRevenue"></a>7. Property `monthlyRevenue`
223
231
 
224
232
  | | |
@@ -232,6 +240,10 @@ Do not include in write requests. This field is set exclusively by the server (F
232
240
  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.
233
241
  :::
234
242
 
243
+ :::note
244
+ Observed as integerValue on all sampled tenants (whole XOF amounts). Will be doubleValue if fractional. REST clients must coerce (#11).
245
+ :::
246
+
235
247
  ## <a name="monthlyPurchasesCount"></a>8. Property `monthlyPurchasesCount`
236
248
 
237
249
  | | |
@@ -325,6 +337,10 @@ Do not include in write requests. This field is set exclusively by the server (F
325
337
  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.
326
338
  :::
327
339
 
340
+ :::note
341
+ Observed as integerValue "0" on all sampled tenants. Will be doubleValue if fractional payments occur. REST clients must coerce (#11).
342
+ :::
343
+
328
344
  ## <a name="todayRevenue"></a>14. Property `todayRevenue`
329
345
 
330
346
  | | |
@@ -441,6 +457,10 @@ Do not include in write requests. This field is set exclusively by the server (F
441
457
  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.
442
458
  :::
443
459
 
460
+ :::note
461
+ Observed as integerValue "0" on all tenants (no reviews yet). Will be doubleValue once real ratings exist. REST clients must coerce (#11).
462
+ :::
463
+
444
464
  ## <a name="lowStockItemsCount"></a>21. Property `lowStockItemsCount`
445
465
 
446
466
  | | |
@@ -673,7 +693,7 @@ Do not include in write requests. This field is set exclusively by the server (F
673
693
  **Description:** (Read-only) YYYY-MM document ID repeated as a field. Identifies the month this rollup covers.
674
694
 
675
695
  ----------------------------------------------------------------------------------------------------------------------------
676
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:38:45 +0000
696
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:28 +0000
677
697
 
678
698
  :::warning Server-set
679
699
  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.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "NotificationRecord"
3
3
  sidebar_label: "NotificationRecord"
4
- sidebar_position: 23
4
+ sidebar_position: 24
5
5
  ---
6
6
 
7
7
  # NotificationRecord
@@ -612,7 +612,7 @@ Do not include in write requests. This field is set exclusively by the server (F
612
612
  | **Maximum** | &le; 9007199254740991 |
613
613
 
614
614
  ----------------------------------------------------------------------------------------------------------------------------
615
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:38:45 +0000
615
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:28 +0000
616
616
 
617
617
  :::warning Server-set
618
618
  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.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "OrderItem"
3
3
  sidebar_label: "OrderItem"
4
- sidebar_position: 25
4
+ sidebar_position: 26
5
5
  ---
6
6
 
7
7
  # OrderItem
@@ -350,7 +350,7 @@ TBD/WIP — Originally from the archived Couchbase Lite (CBL) restaurant flow. C
350
350
  | **Required** | No |
351
351
 
352
352
  ----------------------------------------------------------------------------------------------------------------------------
353
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:38:45 +0000
353
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:28 +0000
354
354
 
355
355
  :::warning Server-set
356
356
  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.