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

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 (79) hide show
  1. package/data/docs/collections/firestore-paths.md +32 -20
  2. package/data/docs/enums/app-status.md +24 -0
  3. package/data/docs/enums/attention-status.md +2 -2
  4. package/data/docs/enums/booking-status.md +2 -2
  5. package/data/docs/enums/contract-status.md +24 -0
  6. package/data/docs/enums/customer-payment-status.md +2 -2
  7. package/data/docs/enums/customer-payment-target-type.md +2 -2
  8. package/data/docs/enums/delivery-type.md +2 -2
  9. package/data/docs/enums/deployment-link-type.md +2 -2
  10. package/data/docs/enums/event-status.md +2 -2
  11. package/data/docs/enums/fulfillment-status.md +2 -2
  12. package/data/docs/enums/loyalty-transaction-type.md +2 -2
  13. package/data/docs/enums/milestone-status.md +23 -0
  14. package/data/docs/enums/notification-channel.md +2 -2
  15. package/data/docs/enums/notification-entity-type.md +2 -2
  16. package/data/docs/enums/notification-status.md +2 -2
  17. package/data/docs/enums/order-status.md +2 -2
  18. package/data/docs/enums/outbound-message-format.md +2 -2
  19. package/data/docs/enums/outbound-message-purpose.md +2 -2
  20. package/data/docs/enums/outbound-message-status.md +2 -2
  21. package/data/docs/enums/payment-method.md +2 -2
  22. package/data/docs/enums/payment-proof-status.md +2 -2
  23. package/data/docs/enums/payment-status.md +2 -2
  24. package/data/docs/enums/pending-issue.md +2 -2
  25. package/data/docs/enums/return-status.md +2 -2
  26. package/data/docs/enums/session-status.md +2 -2
  27. package/data/docs/enums/site-status.md +2 -2
  28. package/data/docs/enums/stocktake-frequency.md +2 -2
  29. package/data/docs/enums/stocktake-item-status.md +2 -2
  30. package/data/docs/enums/stocktake-status.md +2 -2
  31. package/data/docs/enums/ticket-status.md +2 -2
  32. package/data/docs/enums/waba-label.md +3 -3
  33. package/data/docs/enums/whatsapp-button-sub-type.md +2 -2
  34. package/data/docs/enums/whatsapp-template-component.md +2 -2
  35. package/data/docs/enums/whatsapp-template-status.md +2 -2
  36. package/data/docs/index.md +17 -7
  37. package/data/docs/models/allowed-user.md +7 -7
  38. package/data/docs/models/analytics-backfill.md +7 -7
  39. package/data/docs/models/analytics-daily.md +6 -6
  40. package/data/docs/models/analytics-event.md +7 -7
  41. package/data/docs/models/analytics-hourly.md +6 -6
  42. package/data/docs/models/app-payment.md +200 -0
  43. package/data/docs/models/app.md +585 -0
  44. package/data/docs/models/booking-version.md +2 -2
  45. package/data/docs/models/booking.md +127 -127
  46. package/data/docs/models/contract.md +454 -0
  47. package/data/docs/models/customer-payment-allocation.md +20 -20
  48. package/data/docs/models/customer-payment.md +23 -23
  49. package/data/docs/models/customer.md +11 -11
  50. package/data/docs/models/event.md +22 -22
  51. package/data/docs/models/loyalty-config.md +4 -4
  52. package/data/docs/models/loyalty-reward.md +3 -3
  53. package/data/docs/models/loyalty-status.md +6 -6
  54. package/data/docs/models/loyalty-transaction.md +2 -2
  55. package/data/docs/models/magic-link-request.md +9 -9
  56. package/data/docs/models/metrics-current.md +169 -37
  57. package/data/docs/models/metrics-daily.md +172 -40
  58. package/data/docs/models/metrics-monthly.md +172 -40
  59. package/data/docs/models/notification-record.md +3 -3
  60. package/data/docs/models/order-item.md +6 -6
  61. package/data/docs/models/order.md +314 -294
  62. package/data/docs/models/outbound-payment-allocation.md +195 -0
  63. package/data/docs/models/outbound-payment.md +318 -0
  64. package/data/docs/models/payment-webhook-endpoint.md +191 -0
  65. package/data/docs/models/sale.md +18 -18
  66. package/data/docs/models/site-payment.md +2 -2
  67. package/data/docs/models/site.md +2 -2
  68. package/data/docs/models/stocktake-item.md +4 -4
  69. package/data/docs/models/stocktake.md +5 -5
  70. package/data/docs/models/ticket.md +3 -3
  71. package/data/docs/models/user.md +249 -0
  72. package/data/docs/models/whatsapp-inbound-message.md +6 -2
  73. package/data/docs/models/whatsapp-outbound-lifecycle-event.md +2 -2
  74. package/data/docs/models/whatsapp-outbound-message.md +43 -27
  75. package/data/docs/models/whatsapp-template.md +6 -2
  76. package/data/static/llms.txt +322 -36
  77. package/data/static/openapi.yaml +1074 -66
  78. package/data/static/schemas.json +1183 -104
  79. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "Order"
3
3
  sidebar_label: "Order"
4
- sidebar_position: 21
4
+ sidebar_position: 24
5
5
  ---
6
6
 
7
7
  # Order
@@ -14,8 +14,9 @@ sidebar_position: 21
14
14
  "id": "bk_abc123def456",
15
15
  "uid": "user_u8x92kqm",
16
16
  "companyId": "comp_xyz789",
17
- "siteId": null,
17
+ "appId": null,
18
18
  "orderNumber": "ORD-2026-0042",
19
+ "followUpUrl": null,
19
20
  "status": "status",
20
21
  "paymentStatus": "paymentStatus",
21
22
  "fulfillmentStatus": "fulfillmentStatus",
@@ -68,116 +69,117 @@ sidebar_position: 21
68
69
  - [1. Property `id`](#id)
69
70
  - [2. Property `uid`](#uid)
70
71
  - [3. Property `companyId`](#companyId)
71
- - [4. Property `siteId`](#siteId)
72
+ - [4. Property `appId`](#appId)
72
73
  - [5. Property `orderNumber`](#orderNumber)
73
- - [6. Property `status`](#status)
74
- - [7. Property `paymentStatus`](#paymentStatus)
75
- - [7.1. Property `payment-status`](#paymentStatus_anyOf_i0)
76
- - [7.2. Property `item 1`](#paymentStatus_anyOf_i1)
77
- - [8. Property `fulfillmentStatus`](#fulfillmentStatus)
78
- - [8.1. Property `fulfillment-status`](#fulfillmentStatus_anyOf_i0)
79
- - [8.2. Property `item 1`](#fulfillmentStatus_anyOf_i1)
80
- - [9. Property `returnStatus`](#returnStatus)
81
- - [9.1. Property `return-status`](#returnStatus_anyOf_i0)
82
- - [9.2. Property `item 1`](#returnStatus_anyOf_i1)
83
- - [10. Property `deliveryType`](#deliveryType)
84
- - [10.1. Property `delivery-type`](#deliveryType_anyOf_i0)
85
- - [10.2. Property `item 1`](#deliveryType_anyOf_i1)
86
- - [11. Property `paymentMethod`](#paymentMethod)
87
- - [11.1. Property `payment-method`](#paymentMethod_anyOf_i0)
88
- - [11.2. Property `item 1`](#paymentMethod_anyOf_i1)
89
- - [12. Property `invoiceId`](#invoiceId)
90
- - [13. Property `customerId`](#customerId)
91
- - [14. Property `customerName`](#customerName)
92
- - [15. Property `customerEmail`](#customerEmail)
93
- - [16. Property `customerPhone`](#customerPhone)
94
- - [17. Property `clientEmail`](#clientEmail)
95
- - [18. Property `clientPhoneNumber`](#clientPhoneNumber)
96
- - [19. Property `items`](#items)
97
- - [19.1. order-item](#items_items)
98
- - [19.1.1. Property `name`](#items_items_name)
99
- - [19.1.2. Property `quantity`](#items_items_quantity)
100
- - [19.1.3. Property `price`](#items_items_price)
101
- - [19.1.4. Property `productId`](#items_items_productId)
102
- - [19.1.5. Property `increment`](#items_items_increment)
103
- - [19.1.6. Property `variantId`](#items_items_variantId)
104
- - [19.1.7. Property `supplierId`](#items_items_supplierId)
105
- - [19.1.8. Property `supplierName`](#items_items_supplierName)
106
- - [19.1.9. Property `sentAt`](#items_items_sentAt)
107
- - [19.1.9.1. Property `_seconds`](#items_items_sentAt__seconds)
108
- - [19.1.9.2. Property `_nanoseconds`](#items_items_sentAt__nanoseconds)
109
- - [19.1.10. Property `startedCookingAt`](#items_items_startedCookingAt)
110
- - [19.1.10.1. Property `_seconds`](#items_items_startedCookingAt__seconds)
111
- - [19.1.10.2. Property `_nanoseconds`](#items_items_startedCookingAt__nanoseconds)
112
- - [19.1.11. Property `readyAt`](#items_items_readyAt)
113
- - [19.1.11.1. Property `_seconds`](#items_items_readyAt__seconds)
114
- - [19.1.11.2. Property `_nanoseconds`](#items_items_readyAt__nanoseconds)
115
- - [19.1.12. Property `servedAt`](#items_items_servedAt)
116
- - [19.1.12.1. Property `_seconds`](#items_items_servedAt__seconds)
117
- - [19.1.12.2. Property `_nanoseconds`](#items_items_servedAt__nanoseconds)
118
- - [20. Property `amount`](#amount)
119
- - [21. Property `amountPaid`](#amountPaid)
120
- - [22. Property `total`](#total)
121
- - [23. Property `createdAt`](#createdAt)
122
- - [23.1. Property `_seconds`](#createdAt__seconds)
123
- - [23.2. Property `_nanoseconds`](#createdAt__nanoseconds)
124
- - [24. Property `orderDate`](#orderDate)
125
- - [25. Property `PROCESSING_ON`](#PROCESSING_ON)
126
- - [25.1. Property `firestore-timestamp`](#PROCESSING_ON_anyOf_i0)
127
- - [25.2. Property `item 1`](#PROCESSING_ON_anyOf_i1)
128
- - [26. Property `COMPLETED_ON`](#COMPLETED_ON)
129
- - [26.1. Property `firestore-timestamp`](#COMPLETED_ON_anyOf_i0)
130
- - [26.2. Property `item 1`](#COMPLETED_ON_anyOf_i1)
131
- - [27. Property `CANCELLED_ON`](#CANCELLED_ON)
132
- - [27.1. Property `firestore-timestamp`](#CANCELLED_ON_anyOf_i0)
133
- - [27.2. Property `item 1`](#CANCELLED_ON_anyOf_i1)
134
- - [28. Property `cancellationReason`](#cancellationReason)
135
- - [29. Property `shippingCarrier`](#shippingCarrier)
136
- - [30. Property `trackingNumber`](#trackingNumber)
137
- - [31. Property `estimatedDeliveryDate`](#estimatedDeliveryDate)
138
- - [31.1. Property `firestore-timestamp`](#estimatedDeliveryDate_anyOf_i0)
139
- - [31.2. Property `item 1`](#estimatedDeliveryDate_anyOf_i1)
140
- - [32. Property `shippingCost`](#shippingCost)
141
- - [33. Property `paymentProofUrl`](#paymentProofUrl)
142
- - [34. Property `paymentProofStatus`](#paymentProofStatus)
143
- - [34.1. Property `payment-proof-status`](#paymentProofStatus_anyOf_i0)
144
- - [34.2. Property `item 1`](#paymentProofStatus_anyOf_i1)
145
- - [35. Property `paymentProofAddedAt`](#paymentProofAddedAt)
146
- - [35.1. Property `firestore-timestamp`](#paymentProofAddedAt_anyOf_i0)
147
- - [35.2. Property `item 1`](#paymentProofAddedAt_anyOf_i1)
148
- - [36. Property `paymentProofAddedBy`](#paymentProofAddedBy)
149
- - [37. Property `paymentProofReviewedAt`](#paymentProofReviewedAt)
150
- - [37.1. Property `firestore-timestamp`](#paymentProofReviewedAt_anyOf_i0)
151
- - [37.2. Property `item 1`](#paymentProofReviewedAt_anyOf_i1)
152
- - [38. Property `paymentProofReviewedBy`](#paymentProofReviewedBy)
153
- - [39. Property `paymentProofRejectionReason`](#paymentProofRejectionReason)
154
- - [40. Property `paymentStatusChangeReason`](#paymentStatusChangeReason)
155
- - [41. Property `paymentStatusChangedBy`](#paymentStatusChangedBy)
156
- - [42. Property `paymentStatusChangedAt`](#paymentStatusChangedAt)
157
- - [42.1. Property `firestore-timestamp`](#paymentStatusChangedAt_anyOf_i0)
158
- - [42.2. Property `item 1`](#paymentStatusChangedAt_anyOf_i1)
159
- - [43. Property `payments`](#payments)
160
- - [43.1. payments items](#payments_items)
161
- - [43.1.1. Property `paymentId`](#payments_items_paymentId)
162
- - [43.1.2. Property `amount`](#payments_items_amount)
163
- - [43.1.3. Property `currency`](#payments_items_currency)
164
- - [43.1.4. Property `paymentMethod`](#payments_items_paymentMethod)
165
- - [43.1.5. Property `paymentDate`](#payments_items_paymentDate)
166
- - [43.1.6. Property `referenceNumber`](#payments_items_referenceNumber)
167
- - [43.1.7. Property `status`](#payments_items_status)
168
- - [44. Property `totalOverridden`](#totalOverridden)
169
- - [45. Property `notes`](#notes)
170
- - [45.1. notes items](#notes_items)
171
- - [45.1.1. Property `id`](#notes_items_id)
172
- - [45.1.2. Property `text`](#notes_items_text)
173
- - [45.1.3. Property `createdAt`](#notes_items_createdAt)
174
- - [45.1.3.1. Property `_seconds`](#createdAt__seconds)
175
- - [45.1.3.2. Property `_nanoseconds`](#createdAt__nanoseconds)
176
- - [45.1.4. Property `createdBy`](#notes_items_createdBy)
177
- - [45.1.5. Property `createdByName`](#notes_items_createdByName)
178
- - [46. Property `additionalInfo`](#additionalInfo)
179
- - [47. Property `appliedDiscountCode`](#appliedDiscountCode)
180
- - [48. Property `purchaseId`](#purchaseId)
74
+ - [6. Property `followUpUrl`](#followUpUrl)
75
+ - [7. Property `status`](#status)
76
+ - [8. Property `paymentStatus`](#paymentStatus)
77
+ - [8.1. Property `payment-status`](#paymentStatus_anyOf_i0)
78
+ - [8.2. Property `item 1`](#paymentStatus_anyOf_i1)
79
+ - [9. Property `fulfillmentStatus`](#fulfillmentStatus)
80
+ - [9.1. Property `fulfillment-status`](#fulfillmentStatus_anyOf_i0)
81
+ - [9.2. Property `item 1`](#fulfillmentStatus_anyOf_i1)
82
+ - [10. Property `returnStatus`](#returnStatus)
83
+ - [10.1. Property `return-status`](#returnStatus_anyOf_i0)
84
+ - [10.2. Property `item 1`](#returnStatus_anyOf_i1)
85
+ - [11. Property `deliveryType`](#deliveryType)
86
+ - [11.1. Property `delivery-type`](#deliveryType_anyOf_i0)
87
+ - [11.2. Property `item 1`](#deliveryType_anyOf_i1)
88
+ - [12. Property `paymentMethod`](#paymentMethod)
89
+ - [12.1. Property `payment-method`](#paymentMethod_anyOf_i0)
90
+ - [12.2. Property `item 1`](#paymentMethod_anyOf_i1)
91
+ - [13. Property `invoiceId`](#invoiceId)
92
+ - [14. Property `customerId`](#customerId)
93
+ - [15. Property `customerName`](#customerName)
94
+ - [16. Property `customerEmail`](#customerEmail)
95
+ - [17. Property `customerPhone`](#customerPhone)
96
+ - [18. Property `clientEmail`](#clientEmail)
97
+ - [19. Property `clientPhoneNumber`](#clientPhoneNumber)
98
+ - [20. Property `items`](#items)
99
+ - [20.1. order-item](#items_items)
100
+ - [20.1.1. Property `name`](#items_items_name)
101
+ - [20.1.2. Property `quantity`](#items_items_quantity)
102
+ - [20.1.3. Property `price`](#items_items_price)
103
+ - [20.1.4. Property `productId`](#items_items_productId)
104
+ - [20.1.5. Property `increment`](#items_items_increment)
105
+ - [20.1.6. Property `variantId`](#items_items_variantId)
106
+ - [20.1.7. Property `supplierId`](#items_items_supplierId)
107
+ - [20.1.8. Property `supplierName`](#items_items_supplierName)
108
+ - [20.1.9. Property `sentAt`](#items_items_sentAt)
109
+ - [20.1.9.1. Property `_seconds`](#items_items_sentAt__seconds)
110
+ - [20.1.9.2. Property `_nanoseconds`](#items_items_sentAt__nanoseconds)
111
+ - [20.1.10. Property `startedCookingAt`](#items_items_startedCookingAt)
112
+ - [20.1.10.1. Property `_seconds`](#items_items_startedCookingAt__seconds)
113
+ - [20.1.10.2. Property `_nanoseconds`](#items_items_startedCookingAt__nanoseconds)
114
+ - [20.1.11. Property `readyAt`](#items_items_readyAt)
115
+ - [20.1.11.1. Property `_seconds`](#items_items_readyAt__seconds)
116
+ - [20.1.11.2. Property `_nanoseconds`](#items_items_readyAt__nanoseconds)
117
+ - [20.1.12. Property `servedAt`](#items_items_servedAt)
118
+ - [20.1.12.1. Property `_seconds`](#items_items_servedAt__seconds)
119
+ - [20.1.12.2. Property `_nanoseconds`](#items_items_servedAt__nanoseconds)
120
+ - [21. Property `amount`](#amount)
121
+ - [22. Property `amountPaid`](#amountPaid)
122
+ - [23. Property `total`](#total)
123
+ - [24. Property `createdAt`](#createdAt)
124
+ - [24.1. Property `_seconds`](#createdAt__seconds)
125
+ - [24.2. Property `_nanoseconds`](#createdAt__nanoseconds)
126
+ - [25. Property `orderDate`](#orderDate)
127
+ - [26. Property `PROCESSING_ON`](#PROCESSING_ON)
128
+ - [26.1. Property `firestore-timestamp`](#PROCESSING_ON_anyOf_i0)
129
+ - [26.2. Property `item 1`](#PROCESSING_ON_anyOf_i1)
130
+ - [27. Property `COMPLETED_ON`](#COMPLETED_ON)
131
+ - [27.1. Property `firestore-timestamp`](#COMPLETED_ON_anyOf_i0)
132
+ - [27.2. Property `item 1`](#COMPLETED_ON_anyOf_i1)
133
+ - [28. Property `CANCELLED_ON`](#CANCELLED_ON)
134
+ - [28.1. Property `firestore-timestamp`](#CANCELLED_ON_anyOf_i0)
135
+ - [28.2. Property `item 1`](#CANCELLED_ON_anyOf_i1)
136
+ - [29. Property `cancellationReason`](#cancellationReason)
137
+ - [30. Property `shippingCarrier`](#shippingCarrier)
138
+ - [31. Property `trackingNumber`](#trackingNumber)
139
+ - [32. Property `estimatedDeliveryDate`](#estimatedDeliveryDate)
140
+ - [32.1. Property `firestore-timestamp`](#estimatedDeliveryDate_anyOf_i0)
141
+ - [32.2. Property `item 1`](#estimatedDeliveryDate_anyOf_i1)
142
+ - [33. Property `shippingCost`](#shippingCost)
143
+ - [34. Property `paymentProofUrl`](#paymentProofUrl)
144
+ - [35. Property `paymentProofStatus`](#paymentProofStatus)
145
+ - [35.1. Property `payment-proof-status`](#paymentProofStatus_anyOf_i0)
146
+ - [35.2. Property `item 1`](#paymentProofStatus_anyOf_i1)
147
+ - [36. Property `paymentProofAddedAt`](#paymentProofAddedAt)
148
+ - [36.1. Property `firestore-timestamp`](#paymentProofAddedAt_anyOf_i0)
149
+ - [36.2. Property `item 1`](#paymentProofAddedAt_anyOf_i1)
150
+ - [37. Property `paymentProofAddedBy`](#paymentProofAddedBy)
151
+ - [38. Property `paymentProofReviewedAt`](#paymentProofReviewedAt)
152
+ - [38.1. Property `firestore-timestamp`](#paymentProofReviewedAt_anyOf_i0)
153
+ - [38.2. Property `item 1`](#paymentProofReviewedAt_anyOf_i1)
154
+ - [39. Property `paymentProofReviewedBy`](#paymentProofReviewedBy)
155
+ - [40. Property `paymentProofRejectionReason`](#paymentProofRejectionReason)
156
+ - [41. Property `paymentStatusChangeReason`](#paymentStatusChangeReason)
157
+ - [42. Property `paymentStatusChangedBy`](#paymentStatusChangedBy)
158
+ - [43. Property `paymentStatusChangedAt`](#paymentStatusChangedAt)
159
+ - [43.1. Property `firestore-timestamp`](#paymentStatusChangedAt_anyOf_i0)
160
+ - [43.2. Property `item 1`](#paymentStatusChangedAt_anyOf_i1)
161
+ - [44. Property `payments`](#payments)
162
+ - [44.1. payments items](#payments_items)
163
+ - [44.1.1. Property `paymentId`](#payments_items_paymentId)
164
+ - [44.1.2. Property `amount`](#payments_items_amount)
165
+ - [44.1.3. Property `currency`](#payments_items_currency)
166
+ - [44.1.4. Property `paymentMethod`](#payments_items_paymentMethod)
167
+ - [44.1.5. Property `paymentDate`](#payments_items_paymentDate)
168
+ - [44.1.6. Property `referenceNumber`](#payments_items_referenceNumber)
169
+ - [44.1.7. Property `status`](#payments_items_status)
170
+ - [45. Property `totalOverridden`](#totalOverridden)
171
+ - [46. Property `notes`](#notes)
172
+ - [46.1. notes items](#notes_items)
173
+ - [46.1.1. Property `id`](#notes_items_id)
174
+ - [46.1.2. Property `text`](#notes_items_text)
175
+ - [46.1.3. Property `createdAt`](#notes_items_createdAt)
176
+ - [46.1.3.1. Property `_seconds`](#createdAt__seconds)
177
+ - [46.1.3.2. Property `_nanoseconds`](#createdAt__nanoseconds)
178
+ - [46.1.4. Property `createdBy`](#notes_items_createdBy)
179
+ - [46.1.5. Property `createdByName`](#notes_items_createdByName)
180
+ - [47. Property `additionalInfo`](#additionalInfo)
181
+ - [48. Property `appliedDiscountCode`](#appliedDiscountCode)
182
+ - [49. Property `purchaseId`](#purchaseId)
181
183
 
182
184
  | | |
183
185
  | ------------------------- | ------------------- |
@@ -188,56 +190,57 @@ sidebar_position: 21
188
190
 
189
191
  **Description:** Order model (D34). Collection: companies/\{companyId\}/orders/\{orderId\}. Status decomposed into 4 orthogonal fields per D34: status (OrderStatus), paymentStatus, fulfillmentStatus, returnStatus. deliveryType determines the fulfillment channel. MIG-11 migrates the old flat 20-value enum.
190
192
 
191
- | Property | Pattern | Type | Deprecated | Definition | Title/Description |
192
- | -------------------------------------------------------------- | ------- | ----------------------- | ---------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
193
- | + [id](#id ) | No | string | No | - | (Read-only) Firestore document ID. Note: some models also have uid; see ID conventions. |
194
- | + [uid](#uid ) | No | string | No | - | (Read-only) Entity UID. Often mirrors id. |
195
- | + [companyId](#companyId ) | No | string | No | - | (Immutable) FK → Company document ID. Scopes all queries. |
196
- | - [siteId](#siteId ) | No | string or null | No | - | (Immutable, Optional) FK → Site document ID (D43 / ADR-003). null = company-wide. |
197
- | + [orderNumber](#orderNumber ) | No | string | No | - | (Read-only) Server-generated order number. |
198
- | + [status](#status ) | No | enum (of string) | No | In #/definitions/order-status | Core lifecycle status (D34, MIG-11). See OrderStatus enum for the legacy value migration mapping. |
199
- | - [paymentStatus](#paymentStatus ) | No | Combination | No | - | Payment lifecycle (D34). Null until payment is initiated. |
200
- | - [fulfillmentStatus](#fulfillmentStatus ) | No | Combination | No | - | Delivery/fulfillment lifecycle (D34). |
201
- | - [returnStatus](#returnStatus ) | No | Combination | No | - | Return/exchange lifecycle (D34). Null until a return or exchange is initiated. |
202
- | - [deliveryType](#deliveryType ) | No | Combination | No | - | Fulfillment channel for this order (ON_SITE, PICK_UP, DELIVERY). |
203
- | - [paymentMethod](#paymentMethod ) | No | Combination | No | - | Unified payment method set with African + global methods (D02). |
204
- | - [invoiceId](#invoiceId ) | No | string or null | No | - | FK Invoice document ID. |
205
- | - [customerId](#customerId ) | No | string or null | No | - | FK → Customer.id (Firestore doc ID). Used to resolve customer details. |
206
- | - [customerName](#customerName ) | No | string or null | No | - | (Denormalized) From Customer.name at write time. |
207
- | - [customerEmail](#customerEmail ) | No | string or null | No | - | (Denormalized) From Customer.email at write time. Canonical field per D24. |
208
- | - [customerPhone](#customerPhone ) | No | string or null | No | - | (Denormalized) From Customer.phone at write time. Canonical field per D24. |
209
- | - [clientEmail](#clientEmail ) | No | string or null | No | - | (Denormalized) Legacy use \`customerEmail\`. D24 standardized to customer* prefix. |
210
- | - [clientPhoneNumber](#clientPhoneNumber ) | No | string or null | No | - | (Denormalized) Legacy — use \`customerPhone\`. D24 standardized to customer* prefix. |
211
- | - [items](#items ) | No | array or null | No | - | - |
212
- | + [amount](#amount ) | No | number | No | - | Total order amount. Canonical field for the order total. |
213
- | - [amountPaid](#amountPaid ) | No | number or null | No | - | Amount of \`amount\` paid to date. Derived from payment allocations. |
214
- | - [total](#total ) | No | number or null | No | - | Mobile-only legacy total field. Deprecated use \`amount\`. |
215
- | + [createdAt](#createdAt ) | No | object | No | In #/definitions/firestore-timestamp | (Read-only) Server-generated creation timestamp. |
216
- | + [orderDate](#orderDate ) | No | object | No | Same as [createdAt](#createdAt ) | Firestore Timestamp serialized representation |
217
- | - [PROCESSING_ON](#PROCESSING_ON ) | No | Combination | No | - | (Read-only) Timestamp when order entered PROCESSING (D04 SCREAMING_SNAKE). MIG-01 renames from camelCase. |
218
- | - [COMPLETED_ON](#COMPLETED_ON ) | No | Combination | No | - | (Read-only) Timestamp when order completed (D04 SCREAMING_SNAKE). MIG-01 renames from camelCase. |
219
- | - [CANCELLED_ON](#CANCELLED_ON ) | No | Combination | No | - | (Read-only) Timestamp when order cancelled (D04 SCREAMING_SNAKE). MIG-01 renames from camelCase. |
220
- | - [cancellationReason](#cancellationReason ) | No | string or null | No | - | - |
221
- | - [shippingCarrier](#shippingCarrier ) | No | string or null | No | - | - |
222
- | - [trackingNumber](#trackingNumber ) | No | string or null | No | - | - |
223
- | - [estimatedDeliveryDate](#estimatedDeliveryDate ) | No | Combination | No | - | Firestore Timestamp serialized representation |
224
- | - [shippingCost](#shippingCost ) | No | number or null | No | - | - |
225
- | - [paymentProofUrl](#paymentProofUrl ) | No | string or null | No | - | URL to uploaded payment proof image/document. |
226
- | - [paymentProofStatus](#paymentProofStatus ) | No | Combination | No | - | Payment proof review status. |
227
- | - [paymentProofAddedAt](#paymentProofAddedAt ) | No | Combination | No | - | (Read-only) Timestamp when proof was uploaded. |
228
- | - [paymentProofAddedBy](#paymentProofAddedBy ) | No | string or null | No | - | FK User/staff UID who uploaded the payment proof. |
229
- | - [paymentProofReviewedAt](#paymentProofReviewedAt ) | No | Combination | No | - | (Read-only) Timestamp when proof was reviewed. |
230
- | - [paymentProofReviewedBy](#paymentProofReviewedBy ) | No | string or null | No | - | FK User/staff UID who reviewed the payment proof. |
231
- | - [paymentProofRejectionReason](#paymentProofRejectionReason ) | No | string or null | No | - | - |
232
- | - [paymentStatusChangeReason](#paymentStatusChangeReason ) | No | string or null | No | - | - |
233
- | - [paymentStatusChangedBy](#paymentStatusChangedBy ) | No | string or null | No | - | FK → User/staff UID who changed payment status. |
234
- | - [paymentStatusChangedAt](#paymentStatusChangedAt ) | No | Combination | No | - | (Read-only) Timestamp of last payment status change. |
235
- | - [payments](#payments ) | No | array of object or null | No | - | [TBD/WIP — IG-4] Denormalized snapshots of CustomerPayments allocated to this order. Sync rules pending IG-4 resolution. |
236
- | - [totalOverridden](#totalOverridden ) | No | boolean or null | No | - | Mobile-only. When true, total was manually overridden by user (D14). |
237
- | - [notes](#notes ) | No | array of object or null | No | - | - |
238
- | - [additionalInfo](#additionalInfo ) | No | string or null | No | - | - |
239
- | - [appliedDiscountCode](#appliedDiscountCode ) | No | string or null | No | - | - |
240
- | - [purchaseId](#purchaseId ) | No | string or null | No | - | FK → Sale.id. Link to associated Sale document. |
193
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
194
+ | -------------------------------------------------------------- | ------- | ----------------------- | ---------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
195
+ | + [id](#id ) | No | string | No | - | (Read-only) Firestore document ID. Note: some models also have uid; see ID conventions. |
196
+ | + [uid](#uid ) | No | string | No | - | (Read-only) Entity UID. Often mirrors id. |
197
+ | + [companyId](#companyId ) | No | string | No | - | (Immutable) FK → Company document ID. Scopes all queries. |
198
+ | - [appId](#appId ) | No | string or null | No | - | (Immutable, Optional) FK → App document ID (D43 / ADR-003, renamed from siteId per D44). null = company-wide. |
199
+ | + [orderNumber](#orderNumber ) | No | string | No | - | (Read-only) Server-generated order number. |
200
+ | - [followUpUrl](#followUpUrl ) | No | string or null | No | - | Optional URL for receipt QR code / post-order follow-up. Canonical casing: followUpUrl (#6). |
201
+ | + [status](#status ) | No | enum (of string) | No | In #/definitions/order-status | Core lifecycle status (D34, MIG-11). See OrderStatus enum for the legacy value migration mapping. |
202
+ | - [paymentStatus](#paymentStatus ) | No | Combination | No | - | Payment lifecycle (D34). Null until payment is initiated. |
203
+ | - [fulfillmentStatus](#fulfillmentStatus ) | No | Combination | No | - | Delivery/fulfillment lifecycle (D34). |
204
+ | - [returnStatus](#returnStatus ) | No | Combination | No | - | Return/exchange lifecycle (D34). Null until a return or exchange is initiated. |
205
+ | - [deliveryType](#deliveryType ) | No | Combination | No | - | Fulfillment channel for this order (ON_SITE, PICK_UP, DELIVERY). |
206
+ | - [paymentMethod](#paymentMethod ) | No | Combination | No | - | Unified payment method set with African + global methods (D02). |
207
+ | - [invoiceId](#invoiceId ) | No | string or null | No | - | FK → Invoice document ID. |
208
+ | - [customerId](#customerId ) | No | string or null | No | - | FK Customer.id (Firestore doc ID). Used to resolve customer details. |
209
+ | - [customerName](#customerName ) | No | string or null | No | - | (Denormalized) From Customer.name at write time. |
210
+ | - [customerEmail](#customerEmail ) | No | string or null | No | - | (Denormalized) From Customer.email at write time. Canonical field per D24. |
211
+ | - [customerPhone](#customerPhone ) | No | string or null | No | - | (Denormalized) From Customer.phone at write time. Canonical field per D24. |
212
+ | - [clientEmail](#clientEmail ) | No | string or null | No | - | (Denormalized) Legacy — use \`customerEmail\`. D24 standardized to customer* prefix. |
213
+ | - [clientPhoneNumber](#clientPhoneNumber ) | No | string or null | No | - | (Denormalized) Legacy — use \`customerPhone\`. D24 standardized to customer* prefix. |
214
+ | - [items](#items ) | No | array or null | No | - | - |
215
+ | + [amount](#amount ) | No | number | No | - | Total order amount. Canonical field for the order total. |
216
+ | - [amountPaid](#amountPaid ) | No | number or null | No | - | Amount of \`amount\` paid to date. Derived from payment allocations. |
217
+ | - [total](#total ) | No | number or null | No | - | Mobile-only legacy total field. Deprecated — use \`amount\`. |
218
+ | + [createdAt](#createdAt ) | No | object | No | In #/definitions/firestore-timestamp | (Read-only) Server-generated creation timestamp. |
219
+ | + [orderDate](#orderDate ) | No | object | No | Same as [createdAt](#createdAt ) | Firestore Timestamp Admin SDK form: \{ _seconds, _nanoseconds \}. See types/firestore.ts for REST API v1 and client SDK serialization notes (#10). |
220
+ | - [PROCESSING_ON](#PROCESSING_ON ) | No | Combination | No | - | (Read-only) Timestamp when order entered PROCESSING (D04 SCREAMING_SNAKE). MIG-01 renames from camelCase. |
221
+ | - [COMPLETED_ON](#COMPLETED_ON ) | No | Combination | No | - | (Read-only) Timestamp when order completed (D04 SCREAMING_SNAKE). MIG-01 renames from camelCase. |
222
+ | - [CANCELLED_ON](#CANCELLED_ON ) | No | Combination | No | - | (Read-only) Timestamp when order cancelled (D04 SCREAMING_SNAKE). MIG-01 renames from camelCase. |
223
+ | - [cancellationReason](#cancellationReason ) | No | string or null | No | - | - |
224
+ | - [shippingCarrier](#shippingCarrier ) | No | string or null | No | - | - |
225
+ | - [trackingNumber](#trackingNumber ) | No | string or null | No | - | - |
226
+ | - [estimatedDeliveryDate](#estimatedDeliveryDate ) | No | Combination | No | - | Firestore Timestamp — Admin SDK form: \{ _seconds, _nanoseconds \}. See types/firestore.ts for REST API v1 and client SDK serialization notes (#10). |
227
+ | - [shippingCost](#shippingCost ) | No | number or null | No | - | - |
228
+ | - [paymentProofUrl](#paymentProofUrl ) | No | string or null | No | - | URL to uploaded payment proof image/document. |
229
+ | - [paymentProofStatus](#paymentProofStatus ) | No | Combination | No | - | Payment proof review status. |
230
+ | - [paymentProofAddedAt](#paymentProofAddedAt ) | No | Combination | No | - | (Read-only) Timestamp when proof was uploaded. |
231
+ | - [paymentProofAddedBy](#paymentProofAddedBy ) | No | string or null | No | - | FK User/staff UID who uploaded the payment proof. |
232
+ | - [paymentProofReviewedAt](#paymentProofReviewedAt ) | No | Combination | No | - | (Read-only) Timestamp when proof was reviewed. |
233
+ | - [paymentProofReviewedBy](#paymentProofReviewedBy ) | No | string or null | No | - | FK → User/staff UID who reviewed the payment proof. |
234
+ | - [paymentProofRejectionReason](#paymentProofRejectionReason ) | No | string or null | No | - | - |
235
+ | - [paymentStatusChangeReason](#paymentStatusChangeReason ) | No | string or null | No | - | - |
236
+ | - [paymentStatusChangedBy](#paymentStatusChangedBy ) | No | string or null | No | - | FK User/staff UID who changed payment status. |
237
+ | - [paymentStatusChangedAt](#paymentStatusChangedAt ) | No | Combination | No | - | (Read-only) Timestamp of last payment status change. |
238
+ | - [payments](#payments ) | No | array of object or null | No | - | [TBD/WIP — IG-4] Denormalized snapshots of CustomerPayments allocated to this order. Sync rules pending IG-4 resolution. |
239
+ | - [totalOverridden](#totalOverridden ) | No | boolean or null | No | - | Mobile-only. When true, total was manually overridden by user (D14). |
240
+ | - [notes](#notes ) | No | array of object or null | No | - | - |
241
+ | - [additionalInfo](#additionalInfo ) | No | string or null | No | - | - |
242
+ | - [appliedDiscountCode](#appliedDiscountCode ) | No | string or null | No | - | - |
243
+ | - [purchaseId](#purchaseId ) | No | string or null | No | - | FK → Sale.id. Link to associated Sale document. |
241
244
 
242
245
  ## <a name="id"></a>1. Property `id`
243
246
 
@@ -278,29 +281,29 @@ Do not include in write requests. This field is set exclusively by the server (F
278
281
  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.
279
282
  :::
280
283
 
281
- ## <a name="siteId"></a>4. Property `siteId`
284
+ ## <a name="appId"></a>4. Property `appId`
282
285
 
283
286
  | | |
284
287
  | ------------ | ---------------- |
285
288
  | **Type** | `string or null` |
286
289
  | **Required** | No |
287
290
 
288
- **Description:** (Immutable, Optional) FK → Site document ID (D43 / ADR-003). null = company-wide.
291
+ **Description:** (Immutable, Optional) FK → App document ID (D43 / ADR-003, renamed from siteId per D44). null = company-wide.
289
292
 
290
293
  :::info Immutable
291
294
  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.
292
295
  :::
293
296
 
294
297
  :::note
295
- D43 / ADR-003: optional site attribution. Absent/null means company-wide (legacy). When set, the order is attributed to a specific site for analytics and site-scoped dashboards. No migration — existing orders keep null. Flat path; Order continues to live at `companies/\{companyId\}/orders/\{orderId\}`.
298
+ D43 / ADR-003: optional app attribution (renamed from siteId per D44). Absent/null means company-wide (legacy). When set, the order is attributed to a specific app for analytics and app-scoped dashboards. No migration — existing orders keep null. Flat path; Order continues to live at `companies/\{companyId\}/orders/\{orderId\}`.
296
299
  :::
297
300
 
298
301
  :::tip When to set
299
- Set at order creation when the client knows which site the order originated from (e.g. SR Single, Lifesense). Leave null for legacy/company-wide orders. Composite index: (companyId, siteId, createdAt).
302
+ Set at order creation when the client knows which app the order originated from (e.g. SR Single, Lifesense). Leave null for legacy/company-wide orders. Composite index: (companyId, appId, createdAt).
300
303
  :::
301
304
 
302
305
  :::info See also
303
- **Decisions:** `D43`
306
+ **Decisions:** `D43` · `D44`
304
307
  :::
305
308
 
306
309
  ## <a name="orderNumber"></a>5. Property `orderNumber`
@@ -316,7 +319,24 @@ Set at order creation when the client knows which site the order originated from
316
319
  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.
317
320
  :::
318
321
 
319
- ## <a name="status"></a>6. Property `status`
322
+ ## <a name="followUpUrl"></a>6. Property `followUpUrl`
323
+
324
+ | | |
325
+ | ------------ | ---------------- |
326
+ | **Type** | `string or null` |
327
+ | **Required** | No |
328
+
329
+ **Description:** Optional URL for receipt QR code / post-order follow-up. Canonical casing: followUpUrl (#6).
330
+
331
+ :::note
332
+ Standardized casing is followUpUrl (not followUpURL). Mobile legacy code reads both casings for backward compat but writes followUpUrl going forward (#6).
333
+ :::
334
+
335
+ :::tip When to set
336
+ Used by mobile to generate QR codes on printed receipts. If absent, the mobile app derives a deterministic fallback: https://zahoui.web.app/reviews?orderNumber=\{orderNumber\}.
337
+ :::
338
+
339
+ ## <a name="status"></a>7. Property `status`
320
340
 
321
341
  | | |
322
342
  | -------------- | -------------------------- |
@@ -335,7 +355,7 @@ Must be one of:
335
355
  * "CANCELLED"
336
356
  * "EXPIRED"
337
357
 
338
- ## <a name="paymentStatus"></a>7. Property `paymentStatus`
358
+ ## <a name="paymentStatus"></a>8. Property `paymentStatus`
339
359
 
340
360
  | | |
341
361
  | ------------------------- | ---------------- |
@@ -350,7 +370,7 @@ Must be one of:
350
370
  | [payment-status](#paymentStatus_anyOf_i0) |
351
371
  | [item 1](#paymentStatus_anyOf_i1) |
352
372
 
353
- ### <a name="paymentStatus_anyOf_i0"></a>7.1. Property `payment-status`
373
+ ### <a name="paymentStatus_anyOf_i0"></a>8.1. Property `payment-status`
354
374
 
355
375
  | | |
356
376
  | -------------- | ---------------------------- |
@@ -369,14 +389,14 @@ Must be one of:
369
389
  * "REFUNDED"
370
390
  * "PARTIALLY_REFUNDED"
371
391
 
372
- ### <a name="paymentStatus_anyOf_i1"></a>7.2. Property `item 1`
392
+ ### <a name="paymentStatus_anyOf_i1"></a>8.2. Property `item 1`
373
393
 
374
394
  | | |
375
395
  | ------------ | ------ |
376
396
  | **Type** | `null` |
377
397
  | **Required** | No |
378
398
 
379
- ## <a name="fulfillmentStatus"></a>8. Property `fulfillmentStatus`
399
+ ## <a name="fulfillmentStatus"></a>9. Property `fulfillmentStatus`
380
400
 
381
401
  | | |
382
402
  | ------------------------- | ---------------- |
@@ -391,7 +411,7 @@ Must be one of:
391
411
  | [fulfillment-status](#fulfillmentStatus_anyOf_i0) |
392
412
  | [item 1](#fulfillmentStatus_anyOf_i1) |
393
413
 
394
- ### <a name="fulfillmentStatus_anyOf_i0"></a>8.1. Property `fulfillment-status`
414
+ ### <a name="fulfillmentStatus_anyOf_i0"></a>9.1. Property `fulfillment-status`
395
415
 
396
416
  | | |
397
417
  | -------------- | -------------------------------- |
@@ -409,7 +429,7 @@ Must be one of:
409
429
  * "DELIVERED"
410
430
  * "PICKED_UP"
411
431
 
412
- ### <a name="fulfillmentStatus_anyOf_i1"></a>8.2. Property `item 1`
432
+ ### <a name="fulfillmentStatus_anyOf_i1"></a>9.2. Property `item 1`
413
433
 
414
434
  | | |
415
435
  | ------------ | ------ |
@@ -424,7 +444,7 @@ Null for ON_SITE and PICK_UP orders. Set when deliveryType is DELIVERY and a phy
424
444
  **Decisions:** `D34`
425
445
  :::
426
446
 
427
- ## <a name="returnStatus"></a>9. Property `returnStatus`
447
+ ## <a name="returnStatus"></a>10. Property `returnStatus`
428
448
 
429
449
  | | |
430
450
  | ------------------------- | ---------------- |
@@ -439,7 +459,7 @@ Null for ON_SITE and PICK_UP orders. Set when deliveryType is DELIVERY and a phy
439
459
  | [return-status](#returnStatus_anyOf_i0) |
440
460
  | [item 1](#returnStatus_anyOf_i1) |
441
461
 
442
- ### <a name="returnStatus_anyOf_i0"></a>9.1. Property `return-status`
462
+ ### <a name="returnStatus_anyOf_i0"></a>10.1. Property `return-status`
443
463
 
444
464
  | | |
445
465
  | -------------- | --------------------------- |
@@ -457,14 +477,14 @@ Must be one of:
457
477
  * "EXCHANGE_PROCESSING"
458
478
  * "EXCHANGE_COMPLETED"
459
479
 
460
- ### <a name="returnStatus_anyOf_i1"></a>9.2. Property `item 1`
480
+ ### <a name="returnStatus_anyOf_i1"></a>10.2. Property `item 1`
461
481
 
462
482
  | | |
463
483
  | ------------ | ------ |
464
484
  | **Type** | `null` |
465
485
  | **Required** | No |
466
486
 
467
- ## <a name="deliveryType"></a>10. Property `deliveryType`
487
+ ## <a name="deliveryType"></a>11. Property `deliveryType`
468
488
 
469
489
  | | |
470
490
  | ------------------------- | ---------------- |
@@ -479,7 +499,7 @@ Must be one of:
479
499
  | [delivery-type](#deliveryType_anyOf_i0) |
480
500
  | [item 1](#deliveryType_anyOf_i1) |
481
501
 
482
- ### <a name="deliveryType_anyOf_i0"></a>10.1. Property `delivery-type`
502
+ ### <a name="deliveryType_anyOf_i0"></a>11.1. Property `delivery-type`
483
503
 
484
504
  | | |
485
505
  | -------------- | --------------------------- |
@@ -494,7 +514,7 @@ Must be one of:
494
514
  * "PICK_UP"
495
515
  * "DELIVERY"
496
516
 
497
- ### <a name="deliveryType_anyOf_i1"></a>10.2. Property `item 1`
517
+ ### <a name="deliveryType_anyOf_i1"></a>11.2. Property `item 1`
498
518
 
499
519
  | | |
500
520
  | ------------ | ------ |
@@ -505,7 +525,7 @@ Must be one of:
505
525
  Drives whether fulfillmentStatus is relevant. ON_SITE and PICK_UP orders typically have no fulfillmentStatus.
506
526
  :::
507
527
 
508
- ## <a name="paymentMethod"></a>11. Property `paymentMethod`
528
+ ## <a name="paymentMethod"></a>12. Property `paymentMethod`
509
529
 
510
530
  | | |
511
531
  | ------------------------- | ---------------- |
@@ -520,7 +540,7 @@ Drives whether fulfillmentStatus is relevant. ON_SITE and PICK_UP orders typical
520
540
  | [payment-method](#paymentMethod_anyOf_i0) |
521
541
  | [item 1](#paymentMethod_anyOf_i1) |
522
542
 
523
- ### <a name="paymentMethod_anyOf_i0"></a>11.1. Property `payment-method`
543
+ ### <a name="paymentMethod_anyOf_i0"></a>12.1. Property `payment-method`
524
544
 
525
545
  | | |
526
546
  | -------------- | ---------------------------- |
@@ -542,14 +562,14 @@ Must be one of:
542
562
  * "STRIPE"
543
563
  * "OTHER"
544
564
 
545
- ### <a name="paymentMethod_anyOf_i1"></a>11.2. Property `item 1`
565
+ ### <a name="paymentMethod_anyOf_i1"></a>12.2. Property `item 1`
546
566
 
547
567
  | | |
548
568
  | ------------ | ------ |
549
569
  | **Type** | `null` |
550
570
  | **Required** | No |
551
571
 
552
- ## <a name="invoiceId"></a>12. Property `invoiceId`
572
+ ## <a name="invoiceId"></a>13. Property `invoiceId`
553
573
 
554
574
  | | |
555
575
  | ------------ | ---------------- |
@@ -558,7 +578,7 @@ Must be one of:
558
578
 
559
579
  **Description:** FK → Invoice document ID.
560
580
 
561
- ## <a name="customerId"></a>13. Property `customerId`
581
+ ## <a name="customerId"></a>14. Property `customerId`
562
582
 
563
583
  | | |
564
584
  | ------------ | ---------------- |
@@ -567,7 +587,7 @@ Must be one of:
567
587
 
568
588
  **Description:** FK → Customer.id (Firestore doc ID). Used to resolve customer details.
569
589
 
570
- ## <a name="customerName"></a>14. Property `customerName`
590
+ ## <a name="customerName"></a>15. Property `customerName`
571
591
 
572
592
  | | |
573
593
  | ------------ | ---------------- |
@@ -576,7 +596,7 @@ Must be one of:
576
596
 
577
597
  **Description:** (Denormalized) From Customer.name at write time.
578
598
 
579
- ## <a name="customerEmail"></a>15. Property `customerEmail`
599
+ ## <a name="customerEmail"></a>16. Property `customerEmail`
580
600
 
581
601
  | | |
582
602
  | ------------ | ---------------- |
@@ -585,7 +605,7 @@ Must be one of:
585
605
 
586
606
  **Description:** (Denormalized) From Customer.email at write time. Canonical field per D24.
587
607
 
588
- ## <a name="customerPhone"></a>16. Property `customerPhone`
608
+ ## <a name="customerPhone"></a>17. Property `customerPhone`
589
609
 
590
610
  | | |
591
611
  | ------------ | ---------------- |
@@ -594,7 +614,7 @@ Must be one of:
594
614
 
595
615
  **Description:** (Denormalized) From Customer.phone at write time. Canonical field per D24.
596
616
 
597
- ## <a name="clientEmail"></a>17. Property `clientEmail`
617
+ ## <a name="clientEmail"></a>18. Property `clientEmail`
598
618
 
599
619
  | | |
600
620
  | ------------ | ---------------- |
@@ -611,7 +631,7 @@ This field is deprecated. Do not write it in new code.
611
631
  Use `customerEmail` instead.
612
632
  :::
613
633
 
614
- ## <a name="clientPhoneNumber"></a>18. Property `clientPhoneNumber`
634
+ ## <a name="clientPhoneNumber"></a>19. Property `clientPhoneNumber`
615
635
 
616
636
  | | |
617
637
  | ------------ | ---------------- |
@@ -628,7 +648,7 @@ This field is deprecated. Do not write it in new code.
628
648
  Use `customerPhone` instead.
629
649
  :::
630
650
 
631
- ## <a name="items"></a>19. Property `items`
651
+ ## <a name="items"></a>20. Property `items`
632
652
 
633
653
  | | |
634
654
  | ------------ | --------------- |
@@ -647,7 +667,7 @@ Use `customerPhone` instead.
647
667
  | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
648
668
  | [order-item](#items_items) | Line item within an Order or Sale/Purchase. Canonical fields: name, quantity, price, productId. Optional commerce fields (increment, variantId, supplierId, supplierName) and kitchen tracking fields (sentAt, startedCookingAt, readyAt, servedAt) are TBD/WIP pending cross-platform alignment. |
649
669
 
650
- ### <a name="items_items"></a>19.1. order-item
670
+ ### <a name="items_items"></a>20.1. order-item
651
671
 
652
672
  | | |
653
673
  | ------------------------- | ------------------------ |
@@ -673,7 +693,7 @@ Use `customerPhone` instead.
673
693
  | - [readyAt](#items_items_readyAt ) | No | object | No | - | (Read-only) Timestamp when the item was ready for pickup or service. TBD/WIP — archived CBL flow. |
674
694
  | - [servedAt](#items_items_servedAt ) | No | object | No | - | (Read-only) Timestamp when the item was served to the customer. TBD/WIP — archived CBL flow. |
675
695
 
676
- #### <a name="items_items_name"></a>19.1.1. Property `name`
696
+ #### <a name="items_items_name"></a>20.1.1. Property `name`
677
697
 
678
698
  | | |
679
699
  | ------------ | -------- |
@@ -682,7 +702,7 @@ Use `customerPhone` instead.
682
702
 
683
703
  **Description:** Display name of the product or service.
684
704
 
685
- #### <a name="items_items_quantity"></a>19.1.2. Property `quantity`
705
+ #### <a name="items_items_quantity"></a>20.1.2. Property `quantity`
686
706
 
687
707
  | | |
688
708
  | ------------ | -------- |
@@ -691,7 +711,7 @@ Use `customerPhone` instead.
691
711
 
692
712
  **Description:** Number of units ordered.
693
713
 
694
- #### <a name="items_items_price"></a>19.1.3. Property `price`
714
+ #### <a name="items_items_price"></a>20.1.3. Property `price`
695
715
 
696
716
  | | |
697
717
  | ------------ | -------- |
@@ -700,7 +720,7 @@ Use `customerPhone` instead.
700
720
 
701
721
  **Description:** Unit price. Canonical name per D11.
702
722
 
703
- #### <a name="items_items_productId"></a>19.1.4. Property `productId`
723
+ #### <a name="items_items_productId"></a>20.1.4. Property `productId`
704
724
 
705
725
  | | |
706
726
  | ------------ | -------- |
@@ -709,7 +729,7 @@ Use `customerPhone` instead.
709
729
 
710
730
  **Description:** FK → Product document ID.
711
731
 
712
- #### <a name="items_items_increment"></a>19.1.5. Property `increment`
732
+ #### <a name="items_items_increment"></a>20.1.5. Property `increment`
713
733
 
714
734
  | | |
715
735
  | ------------ | -------- |
@@ -718,7 +738,7 @@ Use `customerPhone` instead.
718
738
 
719
739
  **Description:** Quantity step for bundle/bulk items (e.g. 5 for a 5-pack). Dashboard/Firebase only.
720
740
 
721
- #### <a name="items_items_variantId"></a>19.1.6. Property `variantId`
741
+ #### <a name="items_items_variantId"></a>20.1.6. Property `variantId`
722
742
 
723
743
  | | |
724
744
  | ------------ | -------- |
@@ -727,7 +747,7 @@ Use `customerPhone` instead.
727
747
 
728
748
  **Description:** FK → ProductVariant ID within the product. Dashboard/Firebase only.
729
749
 
730
- #### <a name="items_items_supplierId"></a>19.1.7. Property `supplierId`
750
+ #### <a name="items_items_supplierId"></a>20.1.7. Property `supplierId`
731
751
 
732
752
  | | |
733
753
  | ------------ | -------- |
@@ -736,7 +756,7 @@ Use `customerPhone` instead.
736
756
 
737
757
  **Description:** FK → Supplier document ID. B2B orders only.
738
758
 
739
- #### <a name="items_items_supplierName"></a>19.1.8. Property `supplierName`
759
+ #### <a name="items_items_supplierName"></a>20.1.8. Property `supplierName`
740
760
 
741
761
  | | |
742
762
  | ------------ | -------- |
@@ -745,7 +765,7 @@ Use `customerPhone` instead.
745
765
 
746
766
  **Description:** (Denormalized) From Supplier.name at write time. B2B orders only.
747
767
 
748
- #### <a name="items_items_sentAt"></a>19.1.9. Property `sentAt`
768
+ #### <a name="items_items_sentAt"></a>20.1.9. Property `sentAt`
749
769
 
750
770
  | | |
751
771
  | ------------------------- | ----------- |
@@ -760,7 +780,7 @@ Use `customerPhone` instead.
760
780
  | + [_seconds](#items_items_sentAt__seconds ) | No | integer | No | - | - |
761
781
  | + [_nanoseconds](#items_items_sentAt__nanoseconds ) | No | integer | No | - | - |
762
782
 
763
- ##### <a name="items_items_sentAt__seconds"></a>19.1.9.1. Property `_seconds`
783
+ ##### <a name="items_items_sentAt__seconds"></a>20.1.9.1. Property `_seconds`
764
784
 
765
785
  | | |
766
786
  | ------------ | --------- |
@@ -772,7 +792,7 @@ Use `customerPhone` instead.
772
792
  | **Minimum** | &ge; -9007199254740991 |
773
793
  | **Maximum** | &le; 9007199254740991 |
774
794
 
775
- ##### <a name="items_items_sentAt__nanoseconds"></a>19.1.9.2. Property `_nanoseconds`
795
+ ##### <a name="items_items_sentAt__nanoseconds"></a>20.1.9.2. Property `_nanoseconds`
776
796
 
777
797
  | | |
778
798
  | ------------ | --------- |
@@ -784,7 +804,7 @@ Use `customerPhone` instead.
784
804
  | **Minimum** | &ge; -9007199254740991 |
785
805
  | **Maximum** | &le; 9007199254740991 |
786
806
 
787
- #### <a name="items_items_startedCookingAt"></a>19.1.10. Property `startedCookingAt`
807
+ #### <a name="items_items_startedCookingAt"></a>20.1.10. Property `startedCookingAt`
788
808
 
789
809
  | | |
790
810
  | ------------------------- | ----------- |
@@ -799,7 +819,7 @@ Use `customerPhone` instead.
799
819
  | + [_seconds](#items_items_startedCookingAt__seconds ) | No | integer | No | - | - |
800
820
  | + [_nanoseconds](#items_items_startedCookingAt__nanoseconds ) | No | integer | No | - | - |
801
821
 
802
- ##### <a name="items_items_startedCookingAt__seconds"></a>19.1.10.1. Property `_seconds`
822
+ ##### <a name="items_items_startedCookingAt__seconds"></a>20.1.10.1. Property `_seconds`
803
823
 
804
824
  | | |
805
825
  | ------------ | --------- |
@@ -811,7 +831,7 @@ Use `customerPhone` instead.
811
831
  | **Minimum** | &ge; -9007199254740991 |
812
832
  | **Maximum** | &le; 9007199254740991 |
813
833
 
814
- ##### <a name="items_items_startedCookingAt__nanoseconds"></a>19.1.10.2. Property `_nanoseconds`
834
+ ##### <a name="items_items_startedCookingAt__nanoseconds"></a>20.1.10.2. Property `_nanoseconds`
815
835
 
816
836
  | | |
817
837
  | ------------ | --------- |
@@ -823,7 +843,7 @@ Use `customerPhone` instead.
823
843
  | **Minimum** | &ge; -9007199254740991 |
824
844
  | **Maximum** | &le; 9007199254740991 |
825
845
 
826
- #### <a name="items_items_readyAt"></a>19.1.11. Property `readyAt`
846
+ #### <a name="items_items_readyAt"></a>20.1.11. Property `readyAt`
827
847
 
828
848
  | | |
829
849
  | ------------------------- | ----------- |
@@ -838,7 +858,7 @@ Use `customerPhone` instead.
838
858
  | + [_seconds](#items_items_readyAt__seconds ) | No | integer | No | - | - |
839
859
  | + [_nanoseconds](#items_items_readyAt__nanoseconds ) | No | integer | No | - | - |
840
860
 
841
- ##### <a name="items_items_readyAt__seconds"></a>19.1.11.1. Property `_seconds`
861
+ ##### <a name="items_items_readyAt__seconds"></a>20.1.11.1. Property `_seconds`
842
862
 
843
863
  | | |
844
864
  | ------------ | --------- |
@@ -850,7 +870,7 @@ Use `customerPhone` instead.
850
870
  | **Minimum** | &ge; -9007199254740991 |
851
871
  | **Maximum** | &le; 9007199254740991 |
852
872
 
853
- ##### <a name="items_items_readyAt__nanoseconds"></a>19.1.11.2. Property `_nanoseconds`
873
+ ##### <a name="items_items_readyAt__nanoseconds"></a>20.1.11.2. Property `_nanoseconds`
854
874
 
855
875
  | | |
856
876
  | ------------ | --------- |
@@ -862,7 +882,7 @@ Use `customerPhone` instead.
862
882
  | **Minimum** | &ge; -9007199254740991 |
863
883
  | **Maximum** | &le; 9007199254740991 |
864
884
 
865
- #### <a name="items_items_servedAt"></a>19.1.12. Property `servedAt`
885
+ #### <a name="items_items_servedAt"></a>20.1.12. Property `servedAt`
866
886
 
867
887
  | | |
868
888
  | ------------------------- | ----------- |
@@ -877,7 +897,7 @@ Use `customerPhone` instead.
877
897
  | + [_seconds](#items_items_servedAt__seconds ) | No | integer | No | - | - |
878
898
  | + [_nanoseconds](#items_items_servedAt__nanoseconds ) | No | integer | No | - | - |
879
899
 
880
- ##### <a name="items_items_servedAt__seconds"></a>19.1.12.1. Property `_seconds`
900
+ ##### <a name="items_items_servedAt__seconds"></a>20.1.12.1. Property `_seconds`
881
901
 
882
902
  | | |
883
903
  | ------------ | --------- |
@@ -889,7 +909,7 @@ Use `customerPhone` instead.
889
909
  | **Minimum** | &ge; -9007199254740991 |
890
910
  | **Maximum** | &le; 9007199254740991 |
891
911
 
892
- ##### <a name="items_items_servedAt__nanoseconds"></a>19.1.12.2. Property `_nanoseconds`
912
+ ##### <a name="items_items_servedAt__nanoseconds"></a>20.1.12.2. Property `_nanoseconds`
893
913
 
894
914
  | | |
895
915
  | ------------ | --------- |
@@ -901,7 +921,7 @@ Use `customerPhone` instead.
901
921
  | **Minimum** | &ge; -9007199254740991 |
902
922
  | **Maximum** | &le; 9007199254740991 |
903
923
 
904
- ## <a name="amount"></a>20. Property `amount`
924
+ ## <a name="amount"></a>21. Property `amount`
905
925
 
906
926
  | | |
907
927
  | ------------ | -------- |
@@ -910,7 +930,7 @@ Use `customerPhone` instead.
910
930
 
911
931
  **Description:** Total order amount. Canonical field for the order total.
912
932
 
913
- ## <a name="amountPaid"></a>21. Property `amountPaid`
933
+ ## <a name="amountPaid"></a>22. Property `amountPaid`
914
934
 
915
935
  | | |
916
936
  | ------------ | ---------------- |
@@ -919,7 +939,7 @@ Use `customerPhone` instead.
919
939
 
920
940
  **Description:** Amount of `amount` paid to date. Derived from payment allocations.
921
941
 
922
- ## <a name="total"></a>22. Property `total`
942
+ ## <a name="total"></a>23. Property `total`
923
943
 
924
944
  | | |
925
945
  | ------------ | ---------------- |
@@ -940,7 +960,7 @@ Sent by Mobile only. Mirrors `amount`. Use `amount` for all new writes. Pending
940
960
  Use `amount` instead.
941
961
  :::
942
962
 
943
- ## <a name="createdAt"></a>23. Property `createdAt`
963
+ ## <a name="createdAt"></a>24. Property `createdAt`
944
964
 
945
965
  | | |
946
966
  | ------------------------- | --------------------------------- |
@@ -956,7 +976,7 @@ Use `amount` instead.
956
976
  | + [_seconds](#createdAt__seconds ) | No | integer | No | - | - |
957
977
  | + [_nanoseconds](#createdAt__nanoseconds ) | No | integer | No | - | - |
958
978
 
959
- ### <a name="createdAt__seconds"></a>23.1. Property `_seconds`
979
+ ### <a name="createdAt__seconds"></a>24.1. Property `_seconds`
960
980
 
961
981
  | | |
962
982
  | ------------ | --------- |
@@ -968,7 +988,7 @@ Use `amount` instead.
968
988
  | **Minimum** | &ge; -9007199254740991 |
969
989
  | **Maximum** | &le; 9007199254740991 |
970
990
 
971
- ### <a name="createdAt__nanoseconds"></a>23.2. Property `_nanoseconds`
991
+ ### <a name="createdAt__nanoseconds"></a>24.2. Property `_nanoseconds`
972
992
 
973
993
  | | |
974
994
  | ------------ | --------- |
@@ -984,7 +1004,7 @@ Use `amount` instead.
984
1004
  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.
985
1005
  :::
986
1006
 
987
- ## <a name="orderDate"></a>24. Property `orderDate`
1007
+ ## <a name="orderDate"></a>25. Property `orderDate`
988
1008
 
989
1009
  | | |
990
1010
  | ------------------------- | ----------------------- |
@@ -993,9 +1013,9 @@ Do not include in write requests. This field is set exclusively by the server (F
993
1013
  | **Additional properties** | Not allowed |
994
1014
  | **Same definition as** | [createdAt](#createdAt) |
995
1015
 
996
- **Description:** Firestore Timestamp serialized representation
1016
+ **Description:** Firestore Timestamp Admin SDK form: \{ _seconds, _nanoseconds \}. See types/firestore.ts for REST API v1 and client SDK serialization notes (#10).
997
1017
 
998
- ## <a name="PROCESSING_ON"></a>25. Property `PROCESSING_ON`
1018
+ ## <a name="PROCESSING_ON"></a>26. Property `PROCESSING_ON`
999
1019
 
1000
1020
  | | |
1001
1021
  | ------------------------- | ---------------- |
@@ -1010,7 +1030,7 @@ Do not include in write requests. This field is set exclusively by the server (F
1010
1030
  | [firestore-timestamp](#PROCESSING_ON_anyOf_i0) |
1011
1031
  | [item 1](#PROCESSING_ON_anyOf_i1) |
1012
1032
 
1013
- ### <a name="PROCESSING_ON_anyOf_i0"></a>25.1. Property `firestore-timestamp`
1033
+ ### <a name="PROCESSING_ON_anyOf_i0"></a>26.1. Property `firestore-timestamp`
1014
1034
 
1015
1035
  | | |
1016
1036
  | ------------------------- | ----------------------- |
@@ -1019,9 +1039,9 @@ Do not include in write requests. This field is set exclusively by the server (F
1019
1039
  | **Additional properties** | Not allowed |
1020
1040
  | **Same definition as** | [createdAt](#createdAt) |
1021
1041
 
1022
- **Description:** Firestore Timestamp serialized representation
1042
+ **Description:** Firestore Timestamp Admin SDK form: \{ _seconds, _nanoseconds \}. See types/firestore.ts for REST API v1 and client SDK serialization notes (#10).
1023
1043
 
1024
- ### <a name="PROCESSING_ON_anyOf_i1"></a>25.2. Property `item 1`
1044
+ ### <a name="PROCESSING_ON_anyOf_i1"></a>26.2. Property `item 1`
1025
1045
 
1026
1046
  | | |
1027
1047
  | ------------ | ------ |
@@ -1041,7 +1061,7 @@ Never write this field directly. The server sets it automatically on status tran
1041
1061
  **Migrations:** `MIG-01`
1042
1062
  :::
1043
1063
 
1044
- ## <a name="COMPLETED_ON"></a>26. Property `COMPLETED_ON`
1064
+ ## <a name="COMPLETED_ON"></a>27. Property `COMPLETED_ON`
1045
1065
 
1046
1066
  | | |
1047
1067
  | ------------------------- | ---------------- |
@@ -1056,7 +1076,7 @@ Never write this field directly. The server sets it automatically on status tran
1056
1076
  | [firestore-timestamp](#COMPLETED_ON_anyOf_i0) |
1057
1077
  | [item 1](#COMPLETED_ON_anyOf_i1) |
1058
1078
 
1059
- ### <a name="COMPLETED_ON_anyOf_i0"></a>26.1. Property `firestore-timestamp`
1079
+ ### <a name="COMPLETED_ON_anyOf_i0"></a>27.1. Property `firestore-timestamp`
1060
1080
 
1061
1081
  | | |
1062
1082
  | ------------------------- | ----------------------- |
@@ -1065,9 +1085,9 @@ Never write this field directly. The server sets it automatically on status tran
1065
1085
  | **Additional properties** | Not allowed |
1066
1086
  | **Same definition as** | [createdAt](#createdAt) |
1067
1087
 
1068
- **Description:** Firestore Timestamp serialized representation
1088
+ **Description:** Firestore Timestamp Admin SDK form: \{ _seconds, _nanoseconds \}. See types/firestore.ts for REST API v1 and client SDK serialization notes (#10).
1069
1089
 
1070
- ### <a name="COMPLETED_ON_anyOf_i1"></a>26.2. Property `item 1`
1090
+ ### <a name="COMPLETED_ON_anyOf_i1"></a>27.2. Property `item 1`
1071
1091
 
1072
1092
  | | |
1073
1093
  | ------------ | ------ |
@@ -1078,7 +1098,7 @@ Never write this field directly. The server sets it automatically on status tran
1078
1098
  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.
1079
1099
  :::
1080
1100
 
1081
- ## <a name="CANCELLED_ON"></a>27. Property `CANCELLED_ON`
1101
+ ## <a name="CANCELLED_ON"></a>28. Property `CANCELLED_ON`
1082
1102
 
1083
1103
  | | |
1084
1104
  | ------------------------- | ---------------- |
@@ -1093,7 +1113,7 @@ Do not include in write requests. This field is set exclusively by the server (F
1093
1113
  | [firestore-timestamp](#CANCELLED_ON_anyOf_i0) |
1094
1114
  | [item 1](#CANCELLED_ON_anyOf_i1) |
1095
1115
 
1096
- ### <a name="CANCELLED_ON_anyOf_i0"></a>27.1. Property `firestore-timestamp`
1116
+ ### <a name="CANCELLED_ON_anyOf_i0"></a>28.1. Property `firestore-timestamp`
1097
1117
 
1098
1118
  | | |
1099
1119
  | ------------------------- | ----------------------- |
@@ -1102,9 +1122,9 @@ Do not include in write requests. This field is set exclusively by the server (F
1102
1122
  | **Additional properties** | Not allowed |
1103
1123
  | **Same definition as** | [createdAt](#createdAt) |
1104
1124
 
1105
- **Description:** Firestore Timestamp serialized representation
1125
+ **Description:** Firestore Timestamp Admin SDK form: \{ _seconds, _nanoseconds \}. See types/firestore.ts for REST API v1 and client SDK serialization notes (#10).
1106
1126
 
1107
- ### <a name="CANCELLED_ON_anyOf_i1"></a>27.2. Property `item 1`
1127
+ ### <a name="CANCELLED_ON_anyOf_i1"></a>28.2. Property `item 1`
1108
1128
 
1109
1129
  | | |
1110
1130
  | ------------ | ------ |
@@ -1115,28 +1135,28 @@ Do not include in write requests. This field is set exclusively by the server (F
1115
1135
  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.
1116
1136
  :::
1117
1137
 
1118
- ## <a name="cancellationReason"></a>28. Property `cancellationReason`
1138
+ ## <a name="cancellationReason"></a>29. Property `cancellationReason`
1119
1139
 
1120
1140
  | | |
1121
1141
  | ------------ | ---------------- |
1122
1142
  | **Type** | `string or null` |
1123
1143
  | **Required** | No |
1124
1144
 
1125
- ## <a name="shippingCarrier"></a>29. Property `shippingCarrier`
1145
+ ## <a name="shippingCarrier"></a>30. Property `shippingCarrier`
1126
1146
 
1127
1147
  | | |
1128
1148
  | ------------ | ---------------- |
1129
1149
  | **Type** | `string or null` |
1130
1150
  | **Required** | No |
1131
1151
 
1132
- ## <a name="trackingNumber"></a>30. Property `trackingNumber`
1152
+ ## <a name="trackingNumber"></a>31. Property `trackingNumber`
1133
1153
 
1134
1154
  | | |
1135
1155
  | ------------ | ---------------- |
1136
1156
  | **Type** | `string or null` |
1137
1157
  | **Required** | No |
1138
1158
 
1139
- ## <a name="estimatedDeliveryDate"></a>31. Property `estimatedDeliveryDate`
1159
+ ## <a name="estimatedDeliveryDate"></a>32. Property `estimatedDeliveryDate`
1140
1160
 
1141
1161
  | | |
1142
1162
  | ------------------------- | ---------------- |
@@ -1144,14 +1164,14 @@ Do not include in write requests. This field is set exclusively by the server (F
1144
1164
  | **Required** | No |
1145
1165
  | **Additional properties** | Any type allowed |
1146
1166
 
1147
- **Description:** Firestore Timestamp serialized representation
1167
+ **Description:** Firestore Timestamp Admin SDK form: \{ _seconds, _nanoseconds \}. See types/firestore.ts for REST API v1 and client SDK serialization notes (#10).
1148
1168
 
1149
1169
  | Any of(Option) |
1150
1170
  | ------------------------------------------------------ |
1151
1171
  | [firestore-timestamp](#estimatedDeliveryDate_anyOf_i0) |
1152
1172
  | [item 1](#estimatedDeliveryDate_anyOf_i1) |
1153
1173
 
1154
- ### <a name="estimatedDeliveryDate_anyOf_i0"></a>31.1. Property `firestore-timestamp`
1174
+ ### <a name="estimatedDeliveryDate_anyOf_i0"></a>32.1. Property `firestore-timestamp`
1155
1175
 
1156
1176
  | | |
1157
1177
  | ------------------------- | ----------------------- |
@@ -1160,23 +1180,23 @@ Do not include in write requests. This field is set exclusively by the server (F
1160
1180
  | **Additional properties** | Not allowed |
1161
1181
  | **Same definition as** | [createdAt](#createdAt) |
1162
1182
 
1163
- **Description:** Firestore Timestamp serialized representation
1183
+ **Description:** Firestore Timestamp Admin SDK form: \{ _seconds, _nanoseconds \}. See types/firestore.ts for REST API v1 and client SDK serialization notes (#10).
1164
1184
 
1165
- ### <a name="estimatedDeliveryDate_anyOf_i1"></a>31.2. Property `item 1`
1185
+ ### <a name="estimatedDeliveryDate_anyOf_i1"></a>32.2. Property `item 1`
1166
1186
 
1167
1187
  | | |
1168
1188
  | ------------ | ------ |
1169
1189
  | **Type** | `null` |
1170
1190
  | **Required** | No |
1171
1191
 
1172
- ## <a name="shippingCost"></a>32. Property `shippingCost`
1192
+ ## <a name="shippingCost"></a>33. Property `shippingCost`
1173
1193
 
1174
1194
  | | |
1175
1195
  | ------------ | ---------------- |
1176
1196
  | **Type** | `number or null` |
1177
1197
  | **Required** | No |
1178
1198
 
1179
- ## <a name="paymentProofUrl"></a>33. Property `paymentProofUrl`
1199
+ ## <a name="paymentProofUrl"></a>34. Property `paymentProofUrl`
1180
1200
 
1181
1201
  | | |
1182
1202
  | ------------ | ---------------- |
@@ -1185,7 +1205,7 @@ Do not include in write requests. This field is set exclusively by the server (F
1185
1205
 
1186
1206
  **Description:** URL to uploaded payment proof image/document.
1187
1207
 
1188
- ## <a name="paymentProofStatus"></a>34. Property `paymentProofStatus`
1208
+ ## <a name="paymentProofStatus"></a>35. Property `paymentProofStatus`
1189
1209
 
1190
1210
  | | |
1191
1211
  | ------------------------- | ---------------- |
@@ -1200,7 +1220,7 @@ Do not include in write requests. This field is set exclusively by the server (F
1200
1220
  | [payment-proof-status](#paymentProofStatus_anyOf_i0) |
1201
1221
  | [item 1](#paymentProofStatus_anyOf_i1) |
1202
1222
 
1203
- ### <a name="paymentProofStatus_anyOf_i0"></a>34.1. Property `payment-proof-status`
1223
+ ### <a name="paymentProofStatus_anyOf_i0"></a>35.1. Property `payment-proof-status`
1204
1224
 
1205
1225
  | | |
1206
1226
  | -------------- | ---------------------------------- |
@@ -1215,14 +1235,14 @@ Must be one of:
1215
1235
  * "APPROVED"
1216
1236
  * "REJECTED"
1217
1237
 
1218
- ### <a name="paymentProofStatus_anyOf_i1"></a>34.2. Property `item 1`
1238
+ ### <a name="paymentProofStatus_anyOf_i1"></a>35.2. Property `item 1`
1219
1239
 
1220
1240
  | | |
1221
1241
  | ------------ | ------ |
1222
1242
  | **Type** | `null` |
1223
1243
  | **Required** | No |
1224
1244
 
1225
- ## <a name="paymentProofAddedAt"></a>35. Property `paymentProofAddedAt`
1245
+ ## <a name="paymentProofAddedAt"></a>36. Property `paymentProofAddedAt`
1226
1246
 
1227
1247
  | | |
1228
1248
  | ------------------------- | ---------------- |
@@ -1237,7 +1257,7 @@ Must be one of:
1237
1257
  | [firestore-timestamp](#paymentProofAddedAt_anyOf_i0) |
1238
1258
  | [item 1](#paymentProofAddedAt_anyOf_i1) |
1239
1259
 
1240
- ### <a name="paymentProofAddedAt_anyOf_i0"></a>35.1. Property `firestore-timestamp`
1260
+ ### <a name="paymentProofAddedAt_anyOf_i0"></a>36.1. Property `firestore-timestamp`
1241
1261
 
1242
1262
  | | |
1243
1263
  | ------------------------- | ----------------------- |
@@ -1246,9 +1266,9 @@ Must be one of:
1246
1266
  | **Additional properties** | Not allowed |
1247
1267
  | **Same definition as** | [createdAt](#createdAt) |
1248
1268
 
1249
- **Description:** Firestore Timestamp serialized representation
1269
+ **Description:** Firestore Timestamp Admin SDK form: \{ _seconds, _nanoseconds \}. See types/firestore.ts for REST API v1 and client SDK serialization notes (#10).
1250
1270
 
1251
- ### <a name="paymentProofAddedAt_anyOf_i1"></a>35.2. Property `item 1`
1271
+ ### <a name="paymentProofAddedAt_anyOf_i1"></a>36.2. Property `item 1`
1252
1272
 
1253
1273
  | | |
1254
1274
  | ------------ | ------ |
@@ -1259,7 +1279,7 @@ Must be one of:
1259
1279
  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.
1260
1280
  :::
1261
1281
 
1262
- ## <a name="paymentProofAddedBy"></a>36. Property `paymentProofAddedBy`
1282
+ ## <a name="paymentProofAddedBy"></a>37. Property `paymentProofAddedBy`
1263
1283
 
1264
1284
  | | |
1265
1285
  | ------------ | ---------------- |
@@ -1268,7 +1288,7 @@ Do not include in write requests. This field is set exclusively by the server (F
1268
1288
 
1269
1289
  **Description:** FK → User/staff UID who uploaded the payment proof.
1270
1290
 
1271
- ## <a name="paymentProofReviewedAt"></a>37. Property `paymentProofReviewedAt`
1291
+ ## <a name="paymentProofReviewedAt"></a>38. Property `paymentProofReviewedAt`
1272
1292
 
1273
1293
  | | |
1274
1294
  | ------------------------- | ---------------- |
@@ -1283,7 +1303,7 @@ Do not include in write requests. This field is set exclusively by the server (F
1283
1303
  | [firestore-timestamp](#paymentProofReviewedAt_anyOf_i0) |
1284
1304
  | [item 1](#paymentProofReviewedAt_anyOf_i1) |
1285
1305
 
1286
- ### <a name="paymentProofReviewedAt_anyOf_i0"></a>37.1. Property `firestore-timestamp`
1306
+ ### <a name="paymentProofReviewedAt_anyOf_i0"></a>38.1. Property `firestore-timestamp`
1287
1307
 
1288
1308
  | | |
1289
1309
  | ------------------------- | ----------------------- |
@@ -1292,9 +1312,9 @@ Do not include in write requests. This field is set exclusively by the server (F
1292
1312
  | **Additional properties** | Not allowed |
1293
1313
  | **Same definition as** | [createdAt](#createdAt) |
1294
1314
 
1295
- **Description:** Firestore Timestamp serialized representation
1315
+ **Description:** Firestore Timestamp Admin SDK form: \{ _seconds, _nanoseconds \}. See types/firestore.ts for REST API v1 and client SDK serialization notes (#10).
1296
1316
 
1297
- ### <a name="paymentProofReviewedAt_anyOf_i1"></a>37.2. Property `item 1`
1317
+ ### <a name="paymentProofReviewedAt_anyOf_i1"></a>38.2. Property `item 1`
1298
1318
 
1299
1319
  | | |
1300
1320
  | ------------ | ------ |
@@ -1305,7 +1325,7 @@ Do not include in write requests. This field is set exclusively by the server (F
1305
1325
  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.
1306
1326
  :::
1307
1327
 
1308
- ## <a name="paymentProofReviewedBy"></a>38. Property `paymentProofReviewedBy`
1328
+ ## <a name="paymentProofReviewedBy"></a>39. Property `paymentProofReviewedBy`
1309
1329
 
1310
1330
  | | |
1311
1331
  | ------------ | ---------------- |
@@ -1314,21 +1334,21 @@ Do not include in write requests. This field is set exclusively by the server (F
1314
1334
 
1315
1335
  **Description:** FK → User/staff UID who reviewed the payment proof.
1316
1336
 
1317
- ## <a name="paymentProofRejectionReason"></a>39. Property `paymentProofRejectionReason`
1337
+ ## <a name="paymentProofRejectionReason"></a>40. Property `paymentProofRejectionReason`
1318
1338
 
1319
1339
  | | |
1320
1340
  | ------------ | ---------------- |
1321
1341
  | **Type** | `string or null` |
1322
1342
  | **Required** | No |
1323
1343
 
1324
- ## <a name="paymentStatusChangeReason"></a>40. Property `paymentStatusChangeReason`
1344
+ ## <a name="paymentStatusChangeReason"></a>41. Property `paymentStatusChangeReason`
1325
1345
 
1326
1346
  | | |
1327
1347
  | ------------ | ---------------- |
1328
1348
  | **Type** | `string or null` |
1329
1349
  | **Required** | No |
1330
1350
 
1331
- ## <a name="paymentStatusChangedBy"></a>41. Property `paymentStatusChangedBy`
1351
+ ## <a name="paymentStatusChangedBy"></a>42. Property `paymentStatusChangedBy`
1332
1352
 
1333
1353
  | | |
1334
1354
  | ------------ | ---------------- |
@@ -1337,7 +1357,7 @@ Do not include in write requests. This field is set exclusively by the server (F
1337
1357
 
1338
1358
  **Description:** FK → User/staff UID who changed payment status.
1339
1359
 
1340
- ## <a name="paymentStatusChangedAt"></a>42. Property `paymentStatusChangedAt`
1360
+ ## <a name="paymentStatusChangedAt"></a>43. Property `paymentStatusChangedAt`
1341
1361
 
1342
1362
  | | |
1343
1363
  | ------------------------- | ---------------- |
@@ -1352,7 +1372,7 @@ Do not include in write requests. This field is set exclusively by the server (F
1352
1372
  | [firestore-timestamp](#paymentStatusChangedAt_anyOf_i0) |
1353
1373
  | [item 1](#paymentStatusChangedAt_anyOf_i1) |
1354
1374
 
1355
- ### <a name="paymentStatusChangedAt_anyOf_i0"></a>42.1. Property `firestore-timestamp`
1375
+ ### <a name="paymentStatusChangedAt_anyOf_i0"></a>43.1. Property `firestore-timestamp`
1356
1376
 
1357
1377
  | | |
1358
1378
  | ------------------------- | ----------------------- |
@@ -1361,9 +1381,9 @@ Do not include in write requests. This field is set exclusively by the server (F
1361
1381
  | **Additional properties** | Not allowed |
1362
1382
  | **Same definition as** | [createdAt](#createdAt) |
1363
1383
 
1364
- **Description:** Firestore Timestamp serialized representation
1384
+ **Description:** Firestore Timestamp Admin SDK form: \{ _seconds, _nanoseconds \}. See types/firestore.ts for REST API v1 and client SDK serialization notes (#10).
1365
1385
 
1366
- ### <a name="paymentStatusChangedAt_anyOf_i1"></a>42.2. Property `item 1`
1386
+ ### <a name="paymentStatusChangedAt_anyOf_i1"></a>43.2. Property `item 1`
1367
1387
 
1368
1388
  | | |
1369
1389
  | ------------ | ------ |
@@ -1374,7 +1394,7 @@ Do not include in write requests. This field is set exclusively by the server (F
1374
1394
  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.
1375
1395
  :::
1376
1396
 
1377
- ## <a name="payments"></a>43. Property `payments`
1397
+ ## <a name="payments"></a>44. Property `payments`
1378
1398
 
1379
1399
  | | |
1380
1400
  | ------------ | ------------------------- |
@@ -1395,7 +1415,7 @@ Do not include in write requests. This field is set exclusively by the server (F
1395
1415
  | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1396
1416
  | [payments items](#payments_items) | [TBD/WIP — IG-4] Denormalized payment snapshot. Subset of CustomerPayment (D22), written when a payment is allocated to this order. Sync rules pending IG-4 resolution. |
1397
1417
 
1398
- ### <a name="payments_items"></a>43.1. payments items
1418
+ ### <a name="payments_items"></a>44.1. payments items
1399
1419
 
1400
1420
  | | |
1401
1421
  | ------------------------- | ----------- |
@@ -1405,17 +1425,17 @@ Do not include in write requests. This field is set exclusively by the server (F
1405
1425
 
1406
1426
  **Description:** [TBD/WIP — IG-4] Denormalized payment snapshot. Subset of CustomerPayment (D22), written when a payment is allocated to this order. Sync rules pending IG-4 resolution.
1407
1427
 
1408
- | Property | Pattern | Type | Deprecated | Definition | Title/Description |
1409
- | ----------------------------------------------------- | ------- | ---------------- | ---------- | ---------------------------------------------------------- | ----------------------------------------------------------------------------------- |
1410
- | + [paymentId](#payments_items_paymentId ) | No | string | No | - | (Immutable) FK → CustomerPayment.id. Source document for this snapshot. |
1411
- | + [amount](#payments_items_amount ) | No | number | No | - | Total payment amount. |
1412
- | + [currency](#payments_items_currency ) | No | const | No | - | Currency code. Locked to XOF. |
1413
- | + [paymentMethod](#payments_items_paymentMethod ) | No | enum (of string) | No | Same as [paymentMethod_anyOf_i0](#paymentMethod_anyOf_i0 ) | Payment method used (D02). |
1414
- | + [paymentDate](#payments_items_paymentDate ) | No | object | No | Same as [createdAt](#createdAt ) | Firestore Timestamp serialized representation |
1415
- | - [referenceNumber](#payments_items_referenceNumber ) | No | string | No | - | Payment reference (receipt number, transaction ID, etc.). |
1416
- | + [status](#payments_items_status ) | No | enum (of string) | No | In #/definitions/customer-payment-status | Payment status at time of snapshot. May lag CustomerPayment.status until re-synced. |
1428
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
1429
+ | ----------------------------------------------------- | ------- | ---------------- | ---------- | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
1430
+ | + [paymentId](#payments_items_paymentId ) | No | string | No | - | (Immutable) FK → CustomerPayment.id. Source document for this snapshot. |
1431
+ | + [amount](#payments_items_amount ) | No | number | No | - | Total payment amount. |
1432
+ | + [currency](#payments_items_currency ) | No | const | No | - | Currency code. Locked to XOF. |
1433
+ | + [paymentMethod](#payments_items_paymentMethod ) | No | enum (of string) | No | Same as [paymentMethod_anyOf_i0](#paymentMethod_anyOf_i0 ) | Payment method used (D02). |
1434
+ | + [paymentDate](#payments_items_paymentDate ) | No | object | No | Same as [createdAt](#createdAt ) | Firestore Timestamp Admin SDK form: \{ _seconds, _nanoseconds \}. See types/firestore.ts for REST API v1 and client SDK serialization notes (#10). |
1435
+ | - [referenceNumber](#payments_items_referenceNumber ) | No | string | No | - | Payment reference (receipt number, transaction ID, etc.). |
1436
+ | + [status](#payments_items_status ) | No | enum (of string) | No | In #/definitions/customer-payment-status | Payment status at time of snapshot. May lag CustomerPayment.status until re-synced. |
1417
1437
 
1418
- #### <a name="payments_items_paymentId"></a>43.1.1. Property `paymentId`
1438
+ #### <a name="payments_items_paymentId"></a>44.1.1. Property `paymentId`
1419
1439
 
1420
1440
  | | |
1421
1441
  | ------------ | -------- |
@@ -1424,7 +1444,7 @@ Do not include in write requests. This field is set exclusively by the server (F
1424
1444
 
1425
1445
  **Description:** (Immutable) FK → CustomerPayment.id. Source document for this snapshot.
1426
1446
 
1427
- #### <a name="payments_items_amount"></a>43.1.2. Property `amount`
1447
+ #### <a name="payments_items_amount"></a>44.1.2. Property `amount`
1428
1448
 
1429
1449
  | | |
1430
1450
  | ------------ | -------- |
@@ -1433,7 +1453,7 @@ Do not include in write requests. This field is set exclusively by the server (F
1433
1453
 
1434
1454
  **Description:** Total payment amount.
1435
1455
 
1436
- #### <a name="payments_items_currency"></a>43.1.3. Property `currency`
1456
+ #### <a name="payments_items_currency"></a>44.1.3. Property `currency`
1437
1457
 
1438
1458
  | | |
1439
1459
  | ------------ | ------- |
@@ -1444,7 +1464,7 @@ Do not include in write requests. This field is set exclusively by the server (F
1444
1464
 
1445
1465
  Specific value: `"XOF"`
1446
1466
 
1447
- #### <a name="payments_items_paymentMethod"></a>43.1.4. Property `paymentMethod`
1467
+ #### <a name="payments_items_paymentMethod"></a>44.1.4. Property `paymentMethod`
1448
1468
 
1449
1469
  | | |
1450
1470
  | ---------------------- | ------------------------------------------------- |
@@ -1454,7 +1474,7 @@ Specific value: `"XOF"`
1454
1474
 
1455
1475
  **Description:** Payment method used (D02).
1456
1476
 
1457
- #### <a name="payments_items_paymentDate"></a>43.1.5. Property `paymentDate`
1477
+ #### <a name="payments_items_paymentDate"></a>44.1.5. Property `paymentDate`
1458
1478
 
1459
1479
  | | |
1460
1480
  | ------------------------- | ----------------------- |
@@ -1463,9 +1483,9 @@ Specific value: `"XOF"`
1463
1483
  | **Additional properties** | Not allowed |
1464
1484
  | **Same definition as** | [createdAt](#createdAt) |
1465
1485
 
1466
- **Description:** Firestore Timestamp serialized representation
1486
+ **Description:** Firestore Timestamp Admin SDK form: \{ _seconds, _nanoseconds \}. See types/firestore.ts for REST API v1 and client SDK serialization notes (#10).
1467
1487
 
1468
- #### <a name="payments_items_referenceNumber"></a>43.1.6. Property `referenceNumber`
1488
+ #### <a name="payments_items_referenceNumber"></a>44.1.6. Property `referenceNumber`
1469
1489
 
1470
1490
  | | |
1471
1491
  | ------------ | -------- |
@@ -1474,7 +1494,7 @@ Specific value: `"XOF"`
1474
1494
 
1475
1495
  **Description:** Payment reference (receipt number, transaction ID, etc.).
1476
1496
 
1477
- #### <a name="payments_items_status"></a>43.1.7. Property `status`
1497
+ #### <a name="payments_items_status"></a>44.1.7. Property `status`
1478
1498
 
1479
1499
  | | |
1480
1500
  | -------------- | ------------------------------------- |
@@ -1500,7 +1520,7 @@ Shape and sync rules are TBD pending IG-4 resolution. Do not build production lo
1500
1520
  **Issues:** `IG-4`
1501
1521
  :::
1502
1522
 
1503
- ## <a name="totalOverridden"></a>44. Property `totalOverridden`
1523
+ ## <a name="totalOverridden"></a>45. Property `totalOverridden`
1504
1524
 
1505
1525
  | | |
1506
1526
  | ------------ | ----------------- |
@@ -1517,7 +1537,7 @@ Set only by the mobile app when the user manually edits the order total. Dashboa
1517
1537
  **Decisions:** `D14`
1518
1538
  :::
1519
1539
 
1520
- ## <a name="notes"></a>45. Property `notes`
1540
+ ## <a name="notes"></a>46. Property `notes`
1521
1541
 
1522
1542
  | | |
1523
1543
  | ------------ | ------------------------- |
@@ -1536,7 +1556,7 @@ Set only by the mobile app when the user manually edits the order total. Dashboa
1536
1556
  | ------------------------------- | -------------------------------------- |
1537
1557
  | [notes items](#notes_items) | Timestamped note attached to an Order. |
1538
1558
 
1539
- ### <a name="notes_items"></a>45.1. notes items
1559
+ ### <a name="notes_items"></a>46.1. notes items
1540
1560
 
1541
1561
  | | |
1542
1562
  | ------------------------- | ----------- |
@@ -1554,7 +1574,7 @@ Set only by the mobile app when the user manually edits the order total. Dashboa
1554
1574
  | - [createdBy](#notes_items_createdBy ) | No | string | No | - | (Immutable) FK → User/staff UID who created this note. |
1555
1575
  | - [createdByName](#notes_items_createdByName ) | No | string | No | - | (Denormalized) From User display name at write time. |
1556
1576
 
1557
- #### <a name="notes_items_id"></a>45.1.1. Property `id`
1577
+ #### <a name="notes_items_id"></a>46.1.1. Property `id`
1558
1578
 
1559
1579
  | | |
1560
1580
  | ------------ | -------- |
@@ -1563,14 +1583,14 @@ Set only by the mobile app when the user manually edits the order total. Dashboa
1563
1583
 
1564
1584
  **Description:** (Read-only) Note ID. Server-generated.
1565
1585
 
1566
- #### <a name="notes_items_text"></a>45.1.2. Property `text`
1586
+ #### <a name="notes_items_text"></a>46.1.2. Property `text`
1567
1587
 
1568
1588
  | | |
1569
1589
  | ------------ | -------- |
1570
1590
  | **Type** | `string` |
1571
1591
  | **Required** | Yes |
1572
1592
 
1573
- #### <a name="notes_items_createdAt"></a>45.1.3. Property `createdAt`
1593
+ #### <a name="notes_items_createdAt"></a>46.1.3. Property `createdAt`
1574
1594
 
1575
1595
  | | |
1576
1596
  | ------------------------- | --------------------------------- |
@@ -1586,7 +1606,7 @@ Set only by the mobile app when the user manually edits the order total. Dashboa
1586
1606
  | + [_seconds](#createdAt__seconds ) | No | integer | No | - | - |
1587
1607
  | + [_nanoseconds](#createdAt__nanoseconds ) | No | integer | No | - | - |
1588
1608
 
1589
- ##### <a name="createdAt__seconds"></a>45.1.3.1. Property `_seconds`
1609
+ ##### <a name="createdAt__seconds"></a>46.1.3.1. Property `_seconds`
1590
1610
 
1591
1611
  | | |
1592
1612
  | ------------ | --------- |
@@ -1598,7 +1618,7 @@ Set only by the mobile app when the user manually edits the order total. Dashboa
1598
1618
  | **Minimum** | &ge; -9007199254740991 |
1599
1619
  | **Maximum** | &le; 9007199254740991 |
1600
1620
 
1601
- ##### <a name="createdAt__nanoseconds"></a>45.1.3.2. Property `_nanoseconds`
1621
+ ##### <a name="createdAt__nanoseconds"></a>46.1.3.2. Property `_nanoseconds`
1602
1622
 
1603
1623
  | | |
1604
1624
  | ------------ | --------- |
@@ -1610,7 +1630,7 @@ Set only by the mobile app when the user manually edits the order total. Dashboa
1610
1630
  | **Minimum** | &ge; -9007199254740991 |
1611
1631
  | **Maximum** | &le; 9007199254740991 |
1612
1632
 
1613
- #### <a name="notes_items_createdBy"></a>45.1.4. Property `createdBy`
1633
+ #### <a name="notes_items_createdBy"></a>46.1.4. Property `createdBy`
1614
1634
 
1615
1635
  | | |
1616
1636
  | ------------ | -------- |
@@ -1619,7 +1639,7 @@ Set only by the mobile app when the user manually edits the order total. Dashboa
1619
1639
 
1620
1640
  **Description:** (Immutable) FK → User/staff UID who created this note.
1621
1641
 
1622
- #### <a name="notes_items_createdByName"></a>45.1.5. Property `createdByName`
1642
+ #### <a name="notes_items_createdByName"></a>46.1.5. Property `createdByName`
1623
1643
 
1624
1644
  | | |
1625
1645
  | ------------ | -------- |
@@ -1628,21 +1648,21 @@ Set only by the mobile app when the user manually edits the order total. Dashboa
1628
1648
 
1629
1649
  **Description:** (Denormalized) From User display name at write time.
1630
1650
 
1631
- ## <a name="additionalInfo"></a>46. Property `additionalInfo`
1651
+ ## <a name="additionalInfo"></a>47. Property `additionalInfo`
1632
1652
 
1633
1653
  | | |
1634
1654
  | ------------ | ---------------- |
1635
1655
  | **Type** | `string or null` |
1636
1656
  | **Required** | No |
1637
1657
 
1638
- ## <a name="appliedDiscountCode"></a>47. Property `appliedDiscountCode`
1658
+ ## <a name="appliedDiscountCode"></a>48. Property `appliedDiscountCode`
1639
1659
 
1640
1660
  | | |
1641
1661
  | ------------ | ---------------- |
1642
1662
  | **Type** | `string or null` |
1643
1663
  | **Required** | No |
1644
1664
 
1645
- ## <a name="purchaseId"></a>48. Property `purchaseId`
1665
+ ## <a name="purchaseId"></a>49. Property `purchaseId`
1646
1666
 
1647
1667
  | | |
1648
1668
  | ------------ | ---------------- |
@@ -1652,7 +1672,7 @@ Set only by the mobile app when the user manually edits the order total. Dashboa
1652
1672
  **Description:** FK → Sale.id. Link to associated Sale document.
1653
1673
 
1654
1674
  ----------------------------------------------------------------------------------------------------------------------------
1655
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 15:51:05 +0000
1675
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:38:45 +0000
1656
1676
 
1657
1677
  ## Related Decisions
1658
1678