@ingenx-io/valets-schema-mcp-server 0.1.3 → 0.1.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 (43) hide show
  1. package/data/docs/collections/firestore-paths.md +21 -2
  2. package/data/docs/enums/attention-status.md +24 -0
  3. package/data/docs/enums/booking-status.md +2 -2
  4. package/data/docs/enums/customer-payment-status.md +2 -2
  5. package/data/docs/enums/customer-payment-target-type.md +2 -2
  6. package/data/docs/enums/delivery-type.md +2 -2
  7. package/data/docs/enums/event-status.md +2 -2
  8. package/data/docs/enums/fulfillment-status.md +2 -2
  9. package/data/docs/enums/loyalty-transaction-type.md +2 -2
  10. package/data/docs/enums/order-status.md +2 -2
  11. package/data/docs/enums/payment-method.md +2 -2
  12. package/data/docs/enums/payment-proof-status.md +2 -2
  13. package/data/docs/enums/payment-status.md +2 -2
  14. package/data/docs/enums/pending-issue.md +31 -0
  15. package/data/docs/enums/return-status.md +2 -2
  16. package/data/docs/enums/session-status.md +2 -2
  17. package/data/docs/enums/ticket-status.md +2 -2
  18. package/data/docs/index.md +8 -2
  19. package/data/docs/models/allowed-user.md +188 -0
  20. package/data/docs/models/analytics-event.md +533 -0
  21. package/data/docs/models/booking-version.md +2 -2
  22. package/data/docs/models/booking.md +2 -2
  23. package/data/docs/models/customer-payment-allocation.md +2 -2
  24. package/data/docs/models/customer-payment.md +2 -2
  25. package/data/docs/models/customer.md +2 -2
  26. package/data/docs/models/event.md +2 -2
  27. package/data/docs/models/loyalty-config.md +2 -2
  28. package/data/docs/models/loyalty-reward.md +2 -2
  29. package/data/docs/models/loyalty-status.md +2 -2
  30. package/data/docs/models/loyalty-transaction.md +2 -2
  31. package/data/docs/models/magic-link-request.md +285 -0
  32. package/data/docs/models/metrics-current.md +2 -2
  33. package/data/docs/models/metrics-daily.md +2 -2
  34. package/data/docs/models/metrics-monthly.md +2 -2
  35. package/data/docs/models/order-item.md +2 -2
  36. package/data/docs/models/order.md +2 -2
  37. package/data/docs/models/sale.md +2 -2
  38. package/data/docs/models/site-payment.md +200 -0
  39. package/data/docs/models/ticket.md +2 -2
  40. package/data/static/llms.txt +164 -1
  41. package/data/static/openapi.yaml +451 -0
  42. package/data/static/schemas.json +511 -44
  43. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "Ticket"
3
3
  sidebar_label: "Ticket"
4
- sidebar_position: 17
4
+ sidebar_position: 21
5
5
  ---
6
6
 
7
7
  # Ticket
@@ -388,7 +388,7 @@ Do not include in write requests. This field is set exclusively by the server (F
388
388
  **Description:** (Immutable) FK → User/staff UID who created this ticket.
389
389
 
390
390
  ----------------------------------------------------------------------------------------------------------------------------
391
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-04-06 at 19:27:48 +0000
391
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-04-18 at 21:21:09 +0000
392
392
 
393
393
  :::info Immutable
394
394
  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.
@@ -4,12 +4,16 @@
4
4
  > Source of truth: Zod schemas in packages/schema/src/
5
5
  > All Firestore documents are scoped under companies/{companyId}/
6
6
 
7
- > Generated: 2026-04-06
7
+ > Generated: 2026-04-18
8
8
 
9
9
  ---
10
10
 
11
11
  ## Enums
12
12
 
13
+ ### AttentionStatus
14
+ Operational attention status for Order and Booking (D39). Controls home-page queue assignment. Server-owned — set via triggers or callable fn only.
15
+ Values: ACTIVE, STALE, ON_HOLD, ESCALATED
16
+
13
17
  ### BookingStatus
14
18
  Booking lifecycle status. COMPLETED_MIXED = some sessions completed, others cancelled/no-show.
15
19
  Values: PENDING, CONFIRMED, COMPLETED, CANCELLED, CANCELLATION_REQUESTED, COMPLETED_MIXED
@@ -54,6 +58,10 @@ Values: PENDING, APPROVED, REJECTED
54
58
  Payment lifecycle status (D01 amended). Used by Order, Sale/Purchase, Booking.
55
59
  Values: PENDING, PAID, PARTIALLY_PAID, FAILED, REFUND_PROCESSING, REFUNDED, PARTIALLY_REFUNDED
56
60
 
61
+ ### PendingIssue
62
+ Specific detected conditions on an Order or Booking requiring human action (D39). Stored as an array — multiple issues can be active simultaneously. Server-owned.
63
+ Values: PAYMENT_PROOF_PENDING, PAYMENT_PROOF_REJECTED, AMOUNT_DISCREPANCY, RETURN_UNRESOLVED, OVERDUE_DELIVERY, SESSION_OVERDUE, PAYMENT_INCOMPLETE, CANCELLATION_REQUESTED, UNREFUNDED_CANCELLATION, UPCOMING_UNPAID, NO_SHOW_UNRESOLVED
64
+
57
65
  ### ReturnStatus
58
66
  Post-sale return/exchange lifecycle (D34). Optional — null until return or exchange initiated.
59
67
  Values: RETURN_REQUESTED, RETURN_PROCESSING, RETURNED, EXCHANGE_REQUESTED, EXCHANGE_PROCESSING, EXCHANGE_COMPLETED
@@ -70,6 +78,87 @@ Values: VALID, USED, CANCELLED
70
78
 
71
79
  ## Models
72
80
 
81
+ ### AllowedUser
82
+ Fields: 9 (8 required)
83
+
84
+ | Field | Type | Required | Description |
85
+ |-------|------|----------|-------------|
86
+ | id | ['string', 'null'] | no | (Read-only) Firestore document ID = contact identifier (email or E.164 phone), URL-escaped. |
87
+ | companyId | string | yes | (Immutable) FK → Company document ID. |
88
+ | siteId | string | yes | (Immutable) FK → Site document ID (D40 sub-tenant scope). |
89
+ | contact | string | yes | Email or E.164 phone number. Canonical identifier for this user within the site. |
90
+ | tier | string | yes | Access tier. Free string per site (ING-304 open question — tier values are site-specific today). |
91
+ | amount | number | yes | Amount paid. Generalized from amount_xof per D40 decision. |
92
+ | currency | string | yes | Currency code (ISO 4217). Defaults to XOF for legacy SR-Single parity. |
93
+ | transactionId | string | yes | Payment provider transaction ID (e.g. Wave). |
94
+ | paidAt | FirestoreTimestamp | yes | RFC3339Nano UTC when payment was completed. |
95
+
96
+ Example:
97
+ ```json
98
+ {
99
+ "id": null,
100
+ "companyId": "comp_xyz789",
101
+ "siteId": "sit_ref123",
102
+ "contact": "contact",
103
+ "tier": "Gold",
104
+ "amount": 45000,
105
+ "currency": "XOF",
106
+ "transactionId": "tra_ref123",
107
+ "paidAt": "pai_ref123"
108
+ }
109
+ ```
110
+
111
+ ### AnalyticsEvent
112
+ Fields: 12 (10 required)
113
+
114
+ | Field | Type | Required | Description |
115
+ |-------|------|----------|-------------|
116
+ | id | ['string', 'null'] | no | (Read-only) Firestore document ID. Equal to eventId. |
117
+ | companyId | string | yes | (Immutable) FK → Company document ID. |
118
+ | siteId | string | yes | (Immutable) FK → Site document ID (D40 sub-tenant scope). |
119
+ | eventId | string | yes | (Immutable) Client-generated UUID. Matches document ID. |
120
+ | eventName | string | yes | Event name. Free string; canonical vocabulary is encouraged (see CANONICAL_ANALYTICS_EVENT_NAMES). |
121
+ | timestamp | string | yes | Client-side ISO 8601 — "when it happened on device". Can diverge from serverTimestamp for queued offline events. |
122
+ | serverTimestamp | FirestoreTimestamp | yes | (Read-only) Firestore serverTimestamp() — authoritative for ordering. |
123
+ | sessionId | string | yes | 30-minute rolling session identifier. |
124
+ | userId | any | yes | Stable user ID if identified; explicitly null (not omitted) for anonymous sessions — simplifies querying. |
125
+ | properties | object | yes | Free-form event-specific payload. Contract is at the event-name level. PII posture: follow-up issue pending. |
126
+ | context | object | yes | Environment context at event time (nested per D40). |
127
+ | context.url | string | no | Full URL at event time. |
128
+ | context.origin | string | no | Protocol + host. |
129
+ | context.hostname | string | no | Hostname only — useful for deployment identification. |
130
+ | context.page | string | no | Current route/pathname. |
131
+ | context.title | string | no | Page title. |
132
+ | context.referrer | string | no | Referrer URL. |
133
+ | context.deviceType | enum(3) | no | |
134
+ | context.platform | string | no | OS/platform string. |
135
+ | context.screenWidth | integer | no | Viewport width (flattened from screen.width). |
136
+ | context.screenHeight | integer | no | Viewport height (flattened from screen.height). |
137
+ | context.appVersion | string | no | Consuming app version. |
138
+ | context.online | boolean | no | Connectivity state at event time. |
139
+ | context.locale | string | no | User locale. |
140
+ | context.timezone | string | no | IANA timezone. |
141
+ | context.utm | any | no | UTM parameters; null when not a campaign-landed session. |
142
+ | userTraits | ['object', 'null'] | no | Optional — included only when includeUserTraits: true on the write. PII posture: follow-up issue pending. |
143
+
144
+ Example:
145
+ ```json
146
+ {
147
+ "id": null,
148
+ "companyId": "comp_xyz789",
149
+ "siteId": "sit_ref123",
150
+ "eventId": "eve_ref123",
151
+ "eventName": "eventName",
152
+ "timestamp": "timestamp",
153
+ "serverTimestamp": "serverTimestamp",
154
+ "sessionId": "ses_ref123",
155
+ "userId": "use_ref123",
156
+ "properties": {},
157
+ "context": {},
158
+ "userTraits": null
159
+ }
160
+ ```
161
+
73
162
  ### Booking
74
163
  Fields: 52 (7 required)
75
164
 
@@ -586,6 +675,48 @@ Example:
586
675
  }
587
676
  ```
588
677
 
678
+ ### MagicLinkRequest
679
+ Fields: 15 (11 required)
680
+
681
+ | Field | Type | Required | Description |
682
+ |-------|------|----------|-------------|
683
+ | id | ['string', 'null'] | no | (Read-only) Firestore document ID. 16-byte random hex. |
684
+ | companyId | string | yes | (Immutable) FK → Company document ID. |
685
+ | siteId | string | yes | (Immutable) FK → Site document ID (D40 sub-tenant scope). |
686
+ | email | string | yes | Populated if identifier is email; empty string if phone. Mutually exclusive with phone per document. |
687
+ | phone | string | yes | Populated if identifier is E.164 format (starts with +); empty string if email. |
688
+ | ip | string | yes | Client IP from X-Forwarded-For or RemoteAddr. |
689
+ | allowed | boolean | yes | Whether the user passed the access control check. |
690
+ | link | string | yes | Magic-link URL — non-empty only when DEV_MODE=true; empty in production (audit integrity). |
691
+ | tier | string | yes | Access tier selected by the user. Free string per site (ING-304 open question — tier values are site-specific today). |
692
+ | authStatusReason | string | yes | Outcome reason code: whitelist | allowed_users | payment_redirect | payment_complete | not_allowed | redirected_to_payment. |
693
+ | referredBy | string | yes | Contact identifier of the referrer, resolved from submitted referral_code; empty if none. |
694
+ | requestedAt | FirestoreTimestamp | yes | RFC3339Nano UTC at request time. |
695
+ | verifyReason | ['string', 'null'] | no | Verify outcome reason: mirrors authStatusReason on success, or link_expired | link_invalid | not_allowed. |
696
+ | verified | ['boolean', 'null'] | no | Whether the verify attempt succeeded. |
697
+ | verifiedAt | any | no | RFC3339Nano UTC at verify time. |
698
+
699
+ Example:
700
+ ```json
701
+ {
702
+ "id": null,
703
+ "companyId": "comp_xyz789",
704
+ "siteId": "sit_ref123",
705
+ "email": "amadou@example.com",
706
+ "phone": "+225 07 00 11 22",
707
+ "ip": "ip",
708
+ "allowed": true,
709
+ "link": "link",
710
+ "tier": "Gold",
711
+ "authStatusReason": "Customer request",
712
+ "referredBy": "referredBy",
713
+ "requestedAt": "requestedAt",
714
+ "verifyReason": null,
715
+ "verified": null,
716
+ "verifiedAt": "verifiedAt"
717
+ }
718
+ ```
719
+
589
720
  ### MetricsCurrent
590
721
  Fields: 25 (25 required)
591
722
 
@@ -954,6 +1085,38 @@ Example:
954
1085
  }
955
1086
  ```
956
1087
 
1088
+ ### SitePayment
1089
+ Fields: 10 (9 required)
1090
+
1091
+ | Field | Type | Required | Description |
1092
+ |-------|------|----------|-------------|
1093
+ | id | ['string', 'null'] | no | (Read-only) Firestore document ID, auto-generated. |
1094
+ | companyId | string | yes | (Immutable) FK → Company document ID. |
1095
+ | siteId | string | yes | (Immutable) FK → Site document ID (D40 sub-tenant scope). |
1096
+ | contact | string | yes | Email or E.164 phone number. Matches AllowedUser.contact. |
1097
+ | sessionId | string | yes | Payment provider checkout session ID (e.g. Wave). Usable for dedup across dual writes. |
1098
+ | transactionId | string | yes | Payment provider transaction ID. |
1099
+ | tier | string | yes | Access tier. Free string per site (ING-304 open question). |
1100
+ | amount | number | yes | Amount paid. Generalized from amount_xof per D40 decision. |
1101
+ | currency | string | yes | Currency code (ISO 4217). Defaults to XOF for legacy SR-Single parity. |
1102
+ | paidAt | FirestoreTimestamp | yes | RFC3339Nano UTC when payment was completed. |
1103
+
1104
+ Example:
1105
+ ```json
1106
+ {
1107
+ "id": null,
1108
+ "companyId": "comp_xyz789",
1109
+ "siteId": "sit_ref123",
1110
+ "contact": "contact",
1111
+ "sessionId": "ses_ref123",
1112
+ "transactionId": "tra_ref123",
1113
+ "tier": "Gold",
1114
+ "amount": 45000,
1115
+ "currency": "XOF",
1116
+ "paidAt": "pai_ref123"
1117
+ }
1118
+ ```
1119
+
957
1120
  ### Ticket
958
1121
  Fields: 16 (6 required)
959
1122