@ingenx-io/valets-schema-mcp-server 0.2.2 → 0.2.4

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 (72) hide show
  1. package/README.md +26 -0
  2. package/data/docs/collections/firestore-paths.md +15 -0
  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/customer-payment-status.md +1 -1
  6. package/data/docs/enums/customer-payment-target-type.md +1 -1
  7. package/data/docs/enums/delivery-type.md +1 -1
  8. package/data/docs/enums/deployment-link-type.md +1 -1
  9. package/data/docs/enums/event-status.md +1 -1
  10. package/data/docs/enums/fulfillment-status.md +1 -1
  11. package/data/docs/enums/loyalty-transaction-type.md +1 -1
  12. package/data/docs/enums/notification-channel.md +24 -0
  13. package/data/docs/enums/notification-entity-type.md +26 -0
  14. package/data/docs/enums/notification-status.md +23 -0
  15. package/data/docs/enums/order-status.md +2 -2
  16. package/data/docs/enums/outbound-message-format.md +2 -2
  17. package/data/docs/enums/outbound-message-purpose.md +2 -2
  18. package/data/docs/enums/outbound-message-status.md +2 -2
  19. package/data/docs/enums/payment-method.md +2 -2
  20. package/data/docs/enums/payment-proof-status.md +2 -2
  21. package/data/docs/enums/payment-status.md +2 -2
  22. package/data/docs/enums/pending-issue.md +2 -2
  23. package/data/docs/enums/return-status.md +2 -2
  24. package/data/docs/enums/session-status.md +2 -2
  25. package/data/docs/enums/site-status.md +2 -2
  26. package/data/docs/enums/stocktake-frequency.md +2 -2
  27. package/data/docs/enums/stocktake-item-status.md +2 -2
  28. package/data/docs/enums/stocktake-status.md +2 -2
  29. package/data/docs/enums/ticket-status.md +2 -2
  30. package/data/docs/enums/waba-label.md +2 -2
  31. package/data/docs/enums/whatsapp-button-sub-type.md +2 -2
  32. package/data/docs/enums/whatsapp-template-component.md +2 -2
  33. package/data/docs/enums/whatsapp-template-status.md +2 -2
  34. package/data/docs/index.md +6 -2
  35. package/data/docs/models/allowed-user.md +1 -1
  36. package/data/docs/models/analytics-backfill.md +1 -1
  37. package/data/docs/models/analytics-daily.md +1 -1
  38. package/data/docs/models/analytics-event.md +1 -1
  39. package/data/docs/models/analytics-hourly.md +1 -1
  40. package/data/docs/models/booking-version.md +1 -1
  41. package/data/docs/models/booking.md +1 -1
  42. package/data/docs/models/customer-payment-allocation.md +1 -1
  43. package/data/docs/models/customer-payment.md +1 -1
  44. package/data/docs/models/customer.md +1 -1
  45. package/data/docs/models/event.md +1 -1
  46. package/data/docs/models/loyalty-config.md +1 -1
  47. package/data/docs/models/loyalty-reward.md +1 -1
  48. package/data/docs/models/loyalty-status.md +1 -1
  49. package/data/docs/models/loyalty-transaction.md +1 -1
  50. package/data/docs/models/magic-link-request.md +1 -1
  51. package/data/docs/models/metrics-current.md +1 -1
  52. package/data/docs/models/metrics-daily.md +1 -1
  53. package/data/docs/models/metrics-monthly.md +1 -1
  54. package/data/docs/models/notification-record.md +619 -0
  55. package/data/docs/models/order-item.md +2 -2
  56. package/data/docs/models/order.md +2 -2
  57. package/data/docs/models/sale.md +2 -2
  58. package/data/docs/models/site-payment.md +2 -2
  59. package/data/docs/models/site.md +2 -2
  60. package/data/docs/models/stocktake-item.md +2 -2
  61. package/data/docs/models/stocktake.md +2 -2
  62. package/data/docs/models/ticket.md +2 -2
  63. package/data/docs/models/whatsapp-inbound-message.md +2 -2
  64. package/data/docs/models/whatsapp-outbound-lifecycle-event.md +2 -2
  65. package/data/docs/models/whatsapp-outbound-message.md +2 -2
  66. package/data/docs/models/whatsapp-template.md +2 -2
  67. package/data/static/cookbook.json +150 -0
  68. package/data/static/llms.txt +72 -0
  69. package/data/static/openapi.yaml +192 -0
  70. package/data/static/schemas.json +258 -1
  71. package/index.js +32 -0
  72. package/package.json +1 -1
package/README.md CHANGED
@@ -45,6 +45,32 @@ claude mcp add valets-schema -- npx -y @ingenx-io/valets-schema-mcp-server
45
45
  | `list_decisions` | All data model decisions (D00–D37+) with status and summary |
46
46
  | `get_decision` | Full details for a specific decision by ID (e.g. `D12`) |
47
47
  | `get_openapi` | OpenAPI 3.1 spec — full or filtered to a single component (e.g. `Order`, `OrderCreate`) |
48
+ | `get_guidance` | Use-case recipes: tool call sequences, field constraint cheatsheets, and workaround notes. Call with no args for the index, or pass a `slug` for the full recipe. |
49
+
50
+ ## Cookbook
51
+
52
+ `get_guidance` exposes a set of use-case recipes — each one describes the right sequence of MCP tool calls for a specific task.
53
+
54
+ ### Available recipes
55
+
56
+ | Slug | When to use |
57
+ |------|-------------|
58
+ | `write-model-code` | You need to read or write a Firestore document and want to know which fields are server-set, immutable, or deprecated. |
59
+ | `field-history` | You found a field and want to understand why it exists, what decision drove it, and whether it's been migrated. |
60
+ | `whatsapp-conversation-display` | You need to render a per-order WhatsApp message thread. Uses `NotificationRecord` as a workaround (outbound only). |
61
+
62
+ ### Example usage
63
+
64
+ ```
65
+ # Get the index
66
+ get_guidance()
67
+
68
+ # Get a specific recipe
69
+ get_guidance(slug="write-model-code")
70
+ get_guidance(slug="whatsapp-conversation-display")
71
+ ```
72
+
73
+ Each recipe returns JSON with ordered `steps` (tool + args + note), tips, and any relevant caveats or cheatsheets.
48
74
 
49
75
  ## Resources
50
76
 
@@ -11,6 +11,8 @@ All collections are scoped under a company document. Per **D40**, a `sites/{site
11
11
  ```
12
12
  companies/{companyId}/
13
13
  ├── orders/{orderId} ← Order.siteId? (D43 / ADR-003) attributes to a site
14
+ │ └── notifications/{notifId} ← GH#48 — order-scoped notification log (dual-write)
15
+ ├── notifications/{notifId} ← GH#48 — company-wide notification audit log
14
16
  ├── customers/{customerId}
15
17
  ├── bookings/{bookingId}
16
18
  │ └── sessions/{sessionId}
@@ -104,6 +106,19 @@ whatsapp_templates/{waba__name__language} ← GH#43 — Meta-approved
104
106
 
105
107
  **Field ownership on `whatsapp_outbound_messages`:** the dashboard writes `to, waba, wabaId, kind, text/template, purpose?, orderUuid?, sentBy, createdAt` once with `status: 'queued'` (all `x-immutable`); the backend owns every server-set field after — `status` transitions plus `wamid, error, sentAt, deliveredAt, readAt, failedAt` (all `readOnly`). No WABA credentials live in the dashboard.
106
108
 
109
+ ## Notifications (GH#48)
110
+
111
+ `NotificationRecord` is a backend-written, multi-channel (email / whatsapp / sms / push) audit log. It is written by Firebase Cloud Functions and **read-only** for consumers (registered server-owned, no Create/Update variant).
112
+
113
+ | Collection | When written | Notes |
114
+ |---|---|---|
115
+ | `companies/{cid}/notifications/{id}` | **Always** | Company-wide audit log for every notification |
116
+ | `companies/{cid}/orders/{oid}/notifications/{id}` | **Only when** `relatedEntity.type === 'order'` | Dual-write (`Promise.all`) of the same record; enables O(1) per-order history and same-sender WhatsApp threading |
117
+
118
+ For non-order entities (`magic_link`, `booking`, `digest`, …) only the company-wide collection is written. The same document ID is used in both copies.
119
+
120
+ **Distinct from `whatsapp_outbound_messages` (GH#43):** that is a top-level, dashboard-initiated, whatsapp-only send queue; this is a company-scoped, backend-written, multi-channel audit trail.
121
+
107
122
  ## Security rules pattern
108
123
 
109
124
  ```
@@ -21,4 +21,4 @@ Must be one of:
21
21
  * "ESCALATED"
22
22
 
23
23
  ----------------------------------------------------------------------------------------------------------------------------
24
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
24
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -23,4 +23,4 @@ Must be one of:
23
23
  * "COMPLETED_MIXED"
24
24
 
25
25
  ----------------------------------------------------------------------------------------------------------------------------
26
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
26
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -23,4 +23,4 @@ Must be one of:
23
23
  * "CANCELLED"
24
24
 
25
25
  ----------------------------------------------------------------------------------------------------------------------------
26
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
26
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -20,4 +20,4 @@ Must be one of:
20
20
  * "PURCHASE"
21
21
 
22
22
  ----------------------------------------------------------------------------------------------------------------------------
23
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
23
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -20,4 +20,4 @@ Must be one of:
20
20
  * "DELIVERY"
21
21
 
22
22
  ----------------------------------------------------------------------------------------------------------------------------
23
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
23
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -23,4 +23,4 @@ Must be one of:
23
23
  * "other"
24
24
 
25
25
  ----------------------------------------------------------------------------------------------------------------------------
26
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
26
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -21,7 +21,7 @@ Must be one of:
21
21
  * "COMPLETED"
22
22
 
23
23
  ----------------------------------------------------------------------------------------------------------------------------
24
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
24
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
25
25
 
26
26
  ## Related Decisions
27
27
 
@@ -23,7 +23,7 @@ Must be one of:
23
23
  * "PICKED_UP"
24
24
 
25
25
  ----------------------------------------------------------------------------------------------------------------------------
26
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
26
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
27
27
 
28
28
  ## Related Decisions
29
29
 
@@ -23,7 +23,7 @@ Must be one of:
23
23
  * "REFUND"
24
24
 
25
25
  ----------------------------------------------------------------------------------------------------------------------------
26
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
26
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
27
27
 
28
28
  ## Related Decisions
29
29
 
@@ -0,0 +1,24 @@
1
+ ---
2
+ title: "NotificationChannel"
3
+ sidebar_label: "NotificationChannel"
4
+ sidebar_position: 10
5
+ ---
6
+
7
+ # NotificationChannel
8
+
9
+ | | |
10
+ | -------------- | ---------------------------------- |
11
+ | **Type** | `enum (of string)` |
12
+ | **Required** | No |
13
+ | **Defined in** | #/definitions/notification-channel |
14
+
15
+ **Description:** Delivery channel of a NotificationRecord (GH#48).
16
+
17
+ Must be one of:
18
+ * "email"
19
+ * "whatsapp"
20
+ * "sms"
21
+ * "push"
22
+
23
+ ----------------------------------------------------------------------------------------------------------------------------
24
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -0,0 +1,26 @@
1
+ ---
2
+ title: "NotificationEntityType"
3
+ sidebar_label: "NotificationEntityType"
4
+ sidebar_position: 11
5
+ ---
6
+
7
+ # NotificationEntityType
8
+
9
+ | | |
10
+ | -------------- | -------------------------------------- |
11
+ | **Type** | `enum (of string)` |
12
+ | **Required** | No |
13
+ | **Defined in** | #/definitions/notification-entity-type |
14
+
15
+ **Description:** Type of entity a NotificationRecord relates to. When `order`, the record is dual-written to the order-scoped subcollection (GH#48).
16
+
17
+ Must be one of:
18
+ * "order"
19
+ * "booking"
20
+ * "customer"
21
+ * "digest"
22
+ * "magic_link"
23
+ * "other"
24
+
25
+ ----------------------------------------------------------------------------------------------------------------------------
26
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -0,0 +1,23 @@
1
+ ---
2
+ title: "NotificationStatus"
3
+ sidebar_label: "NotificationStatus"
4
+ sidebar_position: 12
5
+ ---
6
+
7
+ # NotificationStatus
8
+
9
+ | | |
10
+ | -------------- | --------------------------------- |
11
+ | **Type** | `enum (of string)` |
12
+ | **Required** | No |
13
+ | **Defined in** | #/definitions/notification-status |
14
+
15
+ **Description:** Delivery status of a NotificationRecord, set by the Cloud Function after a send attempt (GH#48).
16
+
17
+ Must be one of:
18
+ * "sent"
19
+ * "failed"
20
+ * "pending"
21
+
22
+ ----------------------------------------------------------------------------------------------------------------------------
23
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "OrderStatus"
3
3
  sidebar_label: "OrderStatus"
4
- sidebar_position: 10
4
+ sidebar_position: 13
5
5
  ---
6
6
 
7
7
  # OrderStatus
@@ -24,7 +24,7 @@ Must be one of:
24
24
  * "EXPIRED"
25
25
 
26
26
  ----------------------------------------------------------------------------------------------------------------------------
27
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
27
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
28
28
 
29
29
  ## Related Decisions
30
30
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "OutboundMessageFormat"
3
3
  sidebar_label: "OutboundMessageFormat"
4
- sidebar_position: 11
4
+ sidebar_position: 14
5
5
  ---
6
6
 
7
7
  # OutboundMessageFormat
@@ -19,4 +19,4 @@ Must be one of:
19
19
  * "template"
20
20
 
21
21
  ----------------------------------------------------------------------------------------------------------------------------
22
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
22
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "OutboundMessagePurpose"
3
3
  sidebar_label: "OutboundMessagePurpose"
4
- sidebar_position: 12
4
+ sidebar_position: 15
5
5
  ---
6
6
 
7
7
  # OutboundMessagePurpose
@@ -21,4 +21,4 @@ Must be one of:
21
21
  * "conversational"
22
22
 
23
23
  ----------------------------------------------------------------------------------------------------------------------------
24
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
24
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "OutboundMessageStatus"
3
3
  sidebar_label: "OutboundMessageStatus"
4
- sidebar_position: 13
4
+ sidebar_position: 16
5
5
  ---
6
6
 
7
7
  # OutboundMessageStatus
@@ -22,4 +22,4 @@ Must be one of:
22
22
  * "failed"
23
23
 
24
24
  ----------------------------------------------------------------------------------------------------------------------------
25
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
25
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "PaymentMethod"
3
3
  sidebar_label: "PaymentMethod"
4
- sidebar_position: 14
4
+ sidebar_position: 17
5
5
  ---
6
6
 
7
7
  # PaymentMethod
@@ -27,7 +27,7 @@ Must be one of:
27
27
  * "OTHER"
28
28
 
29
29
  ----------------------------------------------------------------------------------------------------------------------------
30
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
30
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
31
31
 
32
32
  ## Related Decisions
33
33
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "PaymentProofStatus"
3
3
  sidebar_label: "PaymentProofStatus"
4
- sidebar_position: 15
4
+ sidebar_position: 18
5
5
  ---
6
6
 
7
7
  # PaymentProofStatus
@@ -20,4 +20,4 @@ Must be one of:
20
20
  * "REJECTED"
21
21
 
22
22
  ----------------------------------------------------------------------------------------------------------------------------
23
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
23
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "PaymentStatus"
3
3
  sidebar_label: "PaymentStatus"
4
- sidebar_position: 16
4
+ sidebar_position: 19
5
5
  ---
6
6
 
7
7
  # PaymentStatus
@@ -24,7 +24,7 @@ Must be one of:
24
24
  * "PARTIALLY_REFUNDED"
25
25
 
26
26
  ----------------------------------------------------------------------------------------------------------------------------
27
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
27
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
28
28
 
29
29
  ## Related Decisions
30
30
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "PendingIssue"
3
3
  sidebar_label: "PendingIssue"
4
- sidebar_position: 17
4
+ sidebar_position: 20
5
5
  ---
6
6
 
7
7
  # PendingIssue
@@ -28,4 +28,4 @@ Must be one of:
28
28
  * "NO_SHOW_UNRESOLVED"
29
29
 
30
30
  ----------------------------------------------------------------------------------------------------------------------------
31
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
31
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "ReturnStatus"
3
3
  sidebar_label: "ReturnStatus"
4
- sidebar_position: 18
4
+ sidebar_position: 21
5
5
  ---
6
6
 
7
7
  # ReturnStatus
@@ -23,7 +23,7 @@ Must be one of:
23
23
  * "EXCHANGE_COMPLETED"
24
24
 
25
25
  ----------------------------------------------------------------------------------------------------------------------------
26
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
26
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
27
27
 
28
28
  ## Related Decisions
29
29
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "SessionStatus"
3
3
  sidebar_label: "SessionStatus"
4
- sidebar_position: 19
4
+ sidebar_position: 22
5
5
  ---
6
6
 
7
7
  # SessionStatus
@@ -23,7 +23,7 @@ Must be one of:
23
23
  * "CANCELLED"
24
24
 
25
25
  ----------------------------------------------------------------------------------------------------------------------------
26
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
26
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
27
27
 
28
28
  ## Related Decisions
29
29
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "SiteStatus"
3
3
  sidebar_label: "SiteStatus"
4
- sidebar_position: 20
4
+ sidebar_position: 23
5
5
  ---
6
6
 
7
7
  # SiteStatus
@@ -21,4 +21,4 @@ Must be one of:
21
21
  * "ARCHIVED"
22
22
 
23
23
  ----------------------------------------------------------------------------------------------------------------------------
24
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
24
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "StocktakeFrequency"
3
3
  sidebar_label: "StocktakeFrequency"
4
- sidebar_position: 21
4
+ sidebar_position: 24
5
5
  ---
6
6
 
7
7
  # StocktakeFrequency
@@ -21,4 +21,4 @@ Must be one of:
21
21
  * "AD_HOC"
22
22
 
23
23
  ----------------------------------------------------------------------------------------------------------------------------
24
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
24
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "StocktakeItemStatus"
3
3
  sidebar_label: "StocktakeItemStatus"
4
- sidebar_position: 22
4
+ sidebar_position: 25
5
5
  ---
6
6
 
7
7
  # StocktakeItemStatus
@@ -21,4 +21,4 @@ Must be one of:
21
21
  * "ADJUSTED"
22
22
 
23
23
  ----------------------------------------------------------------------------------------------------------------------------
24
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
24
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "StocktakeStatus"
3
3
  sidebar_label: "StocktakeStatus"
4
- sidebar_position: 23
4
+ sidebar_position: 26
5
5
  ---
6
6
 
7
7
  # StocktakeStatus
@@ -21,4 +21,4 @@ Must be one of:
21
21
  * "CANCELLED"
22
22
 
23
23
  ----------------------------------------------------------------------------------------------------------------------------
24
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
24
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "TicketStatus"
3
3
  sidebar_label: "TicketStatus"
4
- sidebar_position: 24
4
+ sidebar_position: 27
5
5
  ---
6
6
 
7
7
  # TicketStatus
@@ -20,7 +20,7 @@ Must be one of:
20
20
  * "CANCELLED"
21
21
 
22
22
  ----------------------------------------------------------------------------------------------------------------------------
23
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
23
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
24
24
 
25
25
  ## Related Decisions
26
26
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "WabaLabel"
3
3
  sidebar_label: "WabaLabel"
4
- sidebar_position: 25
4
+ sidebar_position: 28
5
5
  ---
6
6
 
7
7
  # WabaLabel
@@ -19,4 +19,4 @@ Must be one of:
19
19
  * "val"
20
20
 
21
21
  ----------------------------------------------------------------------------------------------------------------------------
22
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
22
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "WhatsappButtonSubType"
3
3
  sidebar_label: "WhatsappButtonSubType"
4
- sidebar_position: 26
4
+ sidebar_position: 29
5
5
  ---
6
6
 
7
7
  # WhatsappButtonSubType
@@ -19,4 +19,4 @@ Must be one of:
19
19
  * "quick_reply"
20
20
 
21
21
  ----------------------------------------------------------------------------------------------------------------------------
22
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
22
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "WhatsappTemplateComponent"
3
3
  sidebar_label: "WhatsappTemplateComponent"
4
- sidebar_position: 27
4
+ sidebar_position: 30
5
5
  ---
6
6
 
7
7
  # WhatsappTemplateComponent
@@ -20,4 +20,4 @@ Must be one of:
20
20
  * "button"
21
21
 
22
22
  ----------------------------------------------------------------------------------------------------------------------------
23
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
23
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:06 +0000
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "WhatsappTemplateStatus"
3
3
  sidebar_label: "WhatsappTemplateStatus"
4
- sidebar_position: 28
4
+ sidebar_position: 31
5
5
  ---
6
6
 
7
7
  # WhatsappTemplateStatus
@@ -23,4 +23,4 @@ Must be one of:
23
23
  * "IN_APPEAL"
24
24
 
25
25
  ----------------------------------------------------------------------------------------------------------------------------
26
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
26
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:06 +0000
@@ -19,7 +19,7 @@ Developers own the Zod source in `packages/schema/src/`. When schemas change, th
19
19
 
20
20
  ## What's documented
21
21
 
22
- ### Enums (28)
22
+ ### Enums (31)
23
23
 
24
24
  Status enums that drive business logic across Order, Booking, Event, and Loyalty domains:
25
25
 
@@ -34,6 +34,9 @@ Status enums that drive business logic across Order, Booking, Event, and Loyalty
34
34
  | [EventStatus](enums/event-status) | 4 values | Ticketed event lifecycle (D32). Mobile-only today; Dashboard in Wave 4. |
35
35
  | [FulfillmentStatus](enums/fulfillment-status) | 6 values | Delivery/fulfillment lifecycle (D34). Optional — null for in-person orders. |
36
36
  | [LoyaltyTransactionType](enums/loyalty-transaction-type) | 6 values | Loyalty point transaction type (D07). SCREAMING_SNAKE past tense. |
37
+ | [NotificationChannel](enums/notification-channel) | 4 values | Delivery channel of a NotificationRecord (GH#48). |
38
+ | [NotificationEntityType](enums/notification-entity-type) | 6 values | Type of entity a NotificationRecord relates to. When `order`, the record is dual-written to the order-scoped subcollection (GH#48). |
39
+ | [NotificationStatus](enums/notification-status) | 3 values | Delivery status of a NotificationRecord, set by the Cloud Function after a send attempt (GH#48). |
37
40
  | [OrderStatus](enums/order-status) | 7 values | Core order lifecycle status (D03, D34). Universal across all business types. Replaces the Dashboard's legacy 20-value flat enum (MIG-11). |
38
41
  | [OutboundMessageFormat](enums/outbound-message-format) | 2 values | Outbound WhatsApp message format. `text` is a free-form body (only valid inside the 24h customer-care window); `template` is a pre-approved WhatsApp template send. The backend is the authority on which is allowed (GH#43). |
39
42
  | [OutboundMessagePurpose](enums/outbound-message-purpose) | 4 values | Business purpose of an outbound WhatsApp message — orthogonal to its format (see OutboundMessageFormat). `otp`/`review_request`/`adhoc` are system-originated; `conversational` is a human agent reply from the dashboard inbox. Optional signal carried for analytics/triggers (GH#43; supersedes the GH#38 OutboundMessageKind). |
@@ -55,7 +58,7 @@ Status enums that drive business logic across Order, Booking, Event, and Loyalty
55
58
  | [WhatsappTemplateStatus](enums/whatsapp-template-status) | 6 values | Meta review status of a WhatsApp message template, synced from the WhatsApp Business API. Only APPROVED templates can be sent. The fuller Meta status set is used deliberately (vs just APPROVED/PENDING/REJECTED) so this enum has a distinct value signature from PaymentProofStatus in the JSON-Schema $ref matcher (GH#43). |
56
59
 
57
60
 
58
- ### Models (31)
61
+ ### Models (32)
59
62
 
60
63
  Core Firestore document schemas:
61
64
 
@@ -80,6 +83,7 @@ Core Firestore document schemas:
80
83
  | [MetricsCurrent](models/metrics-current) | 25 | 25 | — |
81
84
  | [MetricsDaily](models/metrics-daily) | 26 | 26 | — |
82
85
  | [MetricsMonthly](models/metrics-monthly) | 26 | 26 | — |
86
+ | [NotificationRecord](models/notification-record) | 12 | 6 | — |
83
87
  | [Order](models/order) | 48 | 8 | — |
84
88
  | [OrderItem](models/order-item) | 12 | 3 | — |
85
89
  | [Sale](models/sale) | 12 | 1 | — |
@@ -185,4 +185,4 @@ Set at creation only. This field cannot be modified after the document is create
185
185
  | **Maximum** | ≤ 9007199254740991 |
186
186
 
187
187
  ----------------------------------------------------------------------------------------------------------------------------
188
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
188
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -391,7 +391,7 @@ Do not include in write requests. This field is set exclusively by the server (F
391
391
  | **Required** | No |
392
392
 
393
393
  ----------------------------------------------------------------------------------------------------------------------------
394
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
394
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
395
395
 
396
396
  :::warning Server-set
397
397
  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.
@@ -344,7 +344,7 @@ Do not include in write requests. This field is set exclusively by the server (F
344
344
  | **Maximum** | ≤ 9007199254740991 |
345
345
 
346
346
  ----------------------------------------------------------------------------------------------------------------------------
347
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
347
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
348
348
 
349
349
  :::warning Server-set
350
350
  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.
@@ -530,4 +530,4 @@ Must be one of:
530
530
  | **Additional properties** | Any type allowed |
531
531
 
532
532
  ----------------------------------------------------------------------------------------------------------------------------
533
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
533
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
@@ -365,7 +365,7 @@ Do not include in write requests. This field is set exclusively by the server (F
365
365
  | **Maximum** | ≤ 9007199254740991 |
366
366
 
367
367
  ----------------------------------------------------------------------------------------------------------------------------
368
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
368
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
369
369
 
370
370
  :::warning Server-set
371
371
  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.
@@ -270,7 +270,7 @@ Dot-notation paths for nested fields (e.g. "bookingDates.0.status"). Populated b
270
270
  | **Additional properties** | Any type allowed |
271
271
 
272
272
  ----------------------------------------------------------------------------------------------------------------------------
273
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 14:03:20 +0000
273
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
274
274
 
275
275
  :::warning Server-set
276
276
  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.