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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/data/docs/collections/firestore-paths.md +20 -0
  2. package/data/docs/enums/app-status.md +1 -1
  3. package/data/docs/enums/attention-status.md +1 -1
  4. package/data/docs/enums/booking-status.md +1 -1
  5. package/data/docs/enums/contract-status.md +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/expense-payment-status.md +24 -0
  12. package/data/docs/enums/fulfillment-status.md +2 -2
  13. package/data/docs/enums/loyalty-transaction-type.md +2 -2
  14. package/data/docs/enums/milestone-status.md +23 -0
  15. package/data/docs/enums/notification-channel.md +2 -2
  16. package/data/docs/enums/notification-entity-type.md +2 -2
  17. package/data/docs/enums/notification-status.md +2 -2
  18. package/data/docs/enums/order-status.md +2 -2
  19. package/data/docs/enums/outbound-message-format.md +2 -2
  20. package/data/docs/enums/outbound-message-purpose.md +2 -2
  21. package/data/docs/enums/outbound-message-status.md +2 -2
  22. package/data/docs/enums/payment-method.md +4 -3
  23. package/data/docs/enums/payment-proof-status.md +2 -2
  24. package/data/docs/enums/payment-status.md +2 -2
  25. package/data/docs/enums/pending-issue.md +2 -2
  26. package/data/docs/enums/return-status.md +2 -2
  27. package/data/docs/enums/session-status.md +2 -2
  28. package/data/docs/enums/site-status.md +2 -2
  29. package/data/docs/enums/stocktake-frequency.md +2 -2
  30. package/data/docs/enums/stocktake-item-status.md +2 -2
  31. package/data/docs/enums/stocktake-status.md +2 -2
  32. package/data/docs/enums/ticket-status.md +2 -2
  33. package/data/docs/enums/waba-label.md +3 -3
  34. package/data/docs/enums/whatsapp-button-sub-type.md +2 -2
  35. package/data/docs/enums/whatsapp-template-component.md +2 -2
  36. package/data/docs/enums/whatsapp-template-status.md +2 -2
  37. package/data/docs/index.md +15 -6
  38. package/data/docs/models/allowed-user.md +1 -1
  39. package/data/docs/models/analytics-backfill.md +1 -1
  40. package/data/docs/models/analytics-daily.md +1 -1
  41. package/data/docs/models/analytics-event.md +1 -1
  42. package/data/docs/models/analytics-hourly.md +1 -1
  43. package/data/docs/models/app-payment.md +1 -1
  44. package/data/docs/models/app.md +45 -21
  45. package/data/docs/models/booking-version.md +1 -1
  46. package/data/docs/models/booking.md +1 -1
  47. package/data/docs/models/contract.md +454 -0
  48. package/data/docs/models/customer-payment-allocation.md +2 -2
  49. package/data/docs/models/customer-payment.md +23 -22
  50. package/data/docs/models/customer.md +2 -2
  51. package/data/docs/models/event.md +2 -2
  52. package/data/docs/models/expense.md +434 -0
  53. package/data/docs/models/loyalty-config.md +2 -2
  54. package/data/docs/models/loyalty-reward.md +2 -2
  55. package/data/docs/models/loyalty-status.md +2 -2
  56. package/data/docs/models/loyalty-transaction.md +2 -2
  57. package/data/docs/models/magic-link-request.md +2 -2
  58. package/data/docs/models/metrics-current.md +22 -2
  59. package/data/docs/models/metrics-daily.md +92 -41
  60. package/data/docs/models/metrics-monthly.md +22 -2
  61. package/data/docs/models/notification-record.md +2 -2
  62. package/data/docs/models/order-item.md +2 -2
  63. package/data/docs/models/order.md +291 -270
  64. package/data/docs/models/outbound-payment-allocation.md +195 -0
  65. package/data/docs/models/outbound-payment.md +319 -0
  66. package/data/docs/models/payment-webhook-delivery.md +321 -0
  67. package/data/docs/models/payment-webhook-endpoint.md +191 -0
  68. package/data/docs/models/sale.md +2 -2
  69. package/data/docs/models/site-payment.md +2 -2
  70. package/data/docs/models/site.md +2 -2
  71. package/data/docs/models/stocktake-item.md +2 -2
  72. package/data/docs/models/stocktake.md +2 -2
  73. package/data/docs/models/ticket.md +2 -2
  74. package/data/docs/models/user.md +2 -2
  75. package/data/docs/models/whatsapp-inbound-message.md +6 -2
  76. package/data/docs/models/whatsapp-outbound-lifecycle-event.md +2 -2
  77. package/data/docs/models/whatsapp-outbound-message.md +39 -23
  78. package/data/docs/models/whatsapp-template.md +6 -2
  79. package/data/static/llms.txt +242 -10
  80. package/data/static/openapi.yaml +826 -23
  81. package/data/static/schemas.json +877 -71
  82. package/package.json +1 -1
@@ -0,0 +1,321 @@
1
+ ---
2
+ title: "PaymentWebhookDelivery"
3
+ sidebar_label: "PaymentWebhookDelivery"
4
+ sidebar_position: 29
5
+ ---
6
+
7
+ # PaymentWebhookDelivery
8
+
9
+ <details>
10
+ <summary>Example JSON</summary>
11
+
12
+ ```json
13
+ {
14
+ "id": null,
15
+ "company": "company",
16
+ "provider": "pro_ref123",
17
+ "eventType": "eventType",
18
+ "status": "status",
19
+ "verified": "verified",
20
+ "endpointStatus": "endpointStatus",
21
+ "processed": true,
22
+ "reference": "reference",
23
+ "amount": 45000,
24
+ "currency": "XOF",
25
+ "payload": {},
26
+ "rawBody": "rawBody",
27
+ "headers": null,
28
+ "receivedAt": "receivedAt"
29
+ }
30
+ ```
31
+
32
+ </details>
33
+
34
+
35
+ - [1. Property `id`](#id)
36
+ - [2. Property `company`](#company)
37
+ - [3. Property `provider`](#provider)
38
+ - [4. Property `eventType`](#eventType)
39
+ - [5. Property `status`](#status)
40
+ - [6. Property `verified`](#verified)
41
+ - [7. Property `endpointStatus`](#endpointStatus)
42
+ - [8. Property `processed`](#processed)
43
+ - [9. Property `reference`](#reference)
44
+ - [10. Property `amount`](#amount)
45
+ - [11. Property `currency`](#currency)
46
+ - [12. Property `payload`](#payload)
47
+ - [12.1. Property `additionalProperties`](#payload_additionalProperties)
48
+ - [13. Property `rawBody`](#rawBody)
49
+ - [14. Property `headers`](#headers)
50
+ - [14.1. Property `additionalProperties`](#headers_additionalProperties)
51
+ - [15. Property `receivedAt`](#receivedAt)
52
+ - [15.1. Property `_seconds`](#receivedAt__seconds)
53
+ - [15.2. Property `_nanoseconds`](#receivedAt__nanoseconds)
54
+
55
+ | | |
56
+ | ------------------------- | -------------------------------------- |
57
+ | **Type** | `object` |
58
+ | **Required** | No |
59
+ | **Additional properties** | Not allowed |
60
+ | **Defined in** | #/definitions/payment-webhook-delivery |
61
+
62
+ **Description:** PaymentWebhookDelivery (GH#42). Collection: payment_webhooks/\{deliveryId\} (top-level). One document per received provider callback. Contains raw payload + verification outcome. x-internal: written/read only by backend; dashboard reads via admin UI. PII in payload/rawBody — retention policy TBD.
63
+
64
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
65
+ | ------------------------------------ | ------- | -------------- | ---------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ |
66
+ | - [id](#id ) | No | string or null | No | - | (Read-only) Firestore document ID, auto-generated. |
67
+ | + [company](#company ) | No | string | No | - | (Immutable) Company document ID (e.g. "gerko_studios"). Resolved from the matched endpoint at delivery time. |
68
+ | + [provider](#provider ) | No | string | No | - | Payment provider that sent this webhook (e.g. "jeko", "wave"). |
69
+ | + [eventType](#eventType ) | No | string | No | - | Provider-defined event type. Observed: "transaction.payment". Full set per provider TBD (#42). |
70
+ | + [status](#status ) | No | string | No | - | Processing outcome. Observed values: "success" \| "error". |
71
+ | + [verified](#verified ) | No | string | No | - | Signature verification result. Observed: "verified". Other values (e.g. "unverified", "error") may exist but are unconfirmed. |
72
+ | + [endpointStatus](#endpointStatus ) | No | string | No | - | Endpoint resolution result. Observed: "matched". Other values unconfirmed (#42). |
73
+ | + [processed](#processed ) | No | boolean | No | - | Whether this delivery has been reconciled to the AppPayment ledger. |
74
+ | + [reference](#reference ) | No | string | No | - | Provider transaction ID (= payload.id). Canonical dedup key. |
75
+ | + [amount](#amount ) | No | number | No | - | Payment amount, denormalized from payload.amount.amount (XOF). |
76
+ | + [currency](#currency ) | No | string | No | - | Currency code, denormalized from payload.amount.currency (e.g. "XOF"). |
77
+ | + [payload](#payload ) | No | object | No | - | Full parsed provider payload. Shape varies by provider. Contains PII (customer phone). See x-note for retention policy status. |
78
+ | + [rawBody](#rawBody ) | No | string | No | - | Verbatim raw request body — used for HMAC-SHA256 verification. Contains PII. |
79
+ | - [headers](#headers ) | No | object or null | No | - | Incoming HTTP headers. Includes provider signature header and Sentry trace. Sensitive. |
80
+ | + [receivedAt](#receivedAt ) | No | object | No | In #/definitions/firestore-timestamp | When the webhook delivery was received by the backend. |
81
+
82
+ ## <a name="id"></a>1. Property `id`
83
+
84
+ | | |
85
+ | ------------ | ---------------- |
86
+ | **Type** | `string or null` |
87
+ | **Required** | No |
88
+
89
+ **Description:** (Read-only) Firestore document ID, auto-generated.
90
+
91
+ :::warning Server-set
92
+ 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.
93
+ :::
94
+
95
+ ## <a name="company"></a>2. Property `company`
96
+
97
+ | | |
98
+ | ------------ | -------- |
99
+ | **Type** | `string` |
100
+ | **Required** | Yes |
101
+
102
+ **Description:** (Immutable) Company document ID (e.g. "gerko_studios"). Resolved from the matched endpoint at delivery time.
103
+
104
+ :::info Immutable
105
+ 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.
106
+ :::
107
+
108
+ ## <a name="provider"></a>3. Property `provider`
109
+
110
+ | | |
111
+ | ------------ | -------- |
112
+ | **Type** | `string` |
113
+ | **Required** | Yes |
114
+
115
+ **Description:** Payment provider that sent this webhook (e.g. "jeko", "wave").
116
+
117
+ :::note
118
+ Observed value: "jeko". The inner payload.paymentMethod may differ (e.g. "wave") — provider here is the webhook sender, not the payment rail (#42).
119
+ :::
120
+
121
+ ## <a name="eventType"></a>4. Property `eventType`
122
+
123
+ | | |
124
+ | ------------ | -------- |
125
+ | **Type** | `string` |
126
+ | **Required** | Yes |
127
+
128
+ **Description:** Provider-defined event type. Observed: "transaction.payment". Full set per provider TBD (#42).
129
+
130
+ :::note
131
+ Observed value: "transaction.payment". Jeko docs say "transaction.completed" — full set per provider unconfirmed (#42). Use z.string() to avoid rejecting unseen values.
132
+ :::
133
+
134
+ ## <a name="status"></a>5. Property `status`
135
+
136
+ | | |
137
+ | ------------ | -------- |
138
+ | **Type** | `string` |
139
+ | **Required** | Yes |
140
+
141
+ **Description:** Processing outcome. Observed values: "success" | "error".
142
+
143
+ :::note
144
+ Observed values: "success", "error". Indicates whether the webhook was processed without errors.
145
+ :::
146
+
147
+ ## <a name="verified"></a>6. Property `verified`
148
+
149
+ | | |
150
+ | ------------ | -------- |
151
+ | **Type** | `string` |
152
+ | **Required** | Yes |
153
+
154
+ **Description:** Signature verification result. Observed: "verified". Other values (e.g. "unverified", "error") may exist but are unconfirmed.
155
+
156
+ :::note
157
+ Observed value: "verified". Indicates HMAC-SHA256 signature verification result. Full set of failure values unconfirmed (#42).
158
+ :::
159
+
160
+ ## <a name="endpointStatus"></a>7. Property `endpointStatus`
161
+
162
+ | | |
163
+ | ------------ | -------- |
164
+ | **Type** | `string` |
165
+ | **Required** | Yes |
166
+
167
+ **Description:** Endpoint resolution result. Observed: "matched". Other values unconfirmed (#42).
168
+
169
+ :::note
170
+ Observed value: "matched". Indicates whether the token resolved to a known PaymentWebhookEndpoint. Other values (e.g. "not_found", "inactive") unconfirmed (#42).
171
+ :::
172
+
173
+ ## <a name="processed"></a>8. Property `processed`
174
+
175
+ | | |
176
+ | ------------ | --------- |
177
+ | **Type** | `boolean` |
178
+ | **Required** | Yes |
179
+
180
+ **Description:** Whether this delivery has been reconciled to the AppPayment ledger.
181
+
182
+ :::note
183
+ Set to true once the delivery has been reconciled to the AppPayment ledger (companies/\{cid\}/apps/\{appId\}/payments). Back-reference FK not stored on this doc — reconciliation is tracked on the AppPayment side.
184
+ :::
185
+
186
+ ## <a name="reference"></a>9. Property `reference`
187
+
188
+ | | |
189
+ | ------------ | -------- |
190
+ | **Type** | `string` |
191
+ | **Required** | Yes |
192
+
193
+ **Description:** Provider transaction ID (= payload.id). Canonical dedup key.
194
+
195
+ :::note
196
+ Equals payload.id (provider transaction ID). Used as dedup key — the backend checks this before processing (#42 ask 3).
197
+ :::
198
+
199
+ ## <a name="amount"></a>10. Property `amount`
200
+
201
+ | | |
202
+ | ------------ | -------- |
203
+ | **Type** | `number` |
204
+ | **Required** | Yes |
205
+
206
+ **Description:** Payment amount, denormalized from payload.amount.amount (XOF).
207
+
208
+ ## <a name="currency"></a>11. Property `currency`
209
+
210
+ | | |
211
+ | ------------ | -------- |
212
+ | **Type** | `string` |
213
+ | **Required** | Yes |
214
+
215
+ **Description:** Currency code, denormalized from payload.amount.currency (e.g. "XOF").
216
+
217
+ ## <a name="payload"></a>12. Property `payload`
218
+
219
+ | | |
220
+ | ------------------------- | ------------------------------------------------------------------------------------ |
221
+ | **Type** | `object` |
222
+ | **Required** | Yes |
223
+ | **Additional properties** | [Each additional property must conform to the schema](#payload_additionalProperties) |
224
+
225
+ **Description:** Full parsed provider payload. Shape varies by provider. Contains PII (customer phone). See x-note for retention policy status.
226
+
227
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
228
+ | ------------------------------------ | ------- | ------ | ---------- | ---------- | ----------------- |
229
+ | - [](#payload_additionalProperties ) | No | object | No | - | - |
230
+
231
+ ### <a name="payload_additionalProperties"></a>12.1. Property `additionalProperties`
232
+
233
+ | | |
234
+ | ------------------------- | ---------------- |
235
+ | **Type** | `object` |
236
+ | **Required** | No |
237
+ | **Additional properties** | Any type allowed |
238
+
239
+ :::note
240
+ Parsed provider request body. Contains PII: counterpartIdentifier and counterpartLabel hold customer phone numbers. Retention/TTL policy TBD (#42 ask 5).
241
+ :::
242
+
243
+ ## <a name="rawBody"></a>13. Property `rawBody`
244
+
245
+ | | |
246
+ | ------------ | -------- |
247
+ | **Type** | `string` |
248
+ | **Required** | Yes |
249
+
250
+ **Description:** Verbatim raw request body — used for HMAC-SHA256 verification. Contains PII.
251
+
252
+ :::note
253
+ Verbatim request body string used for HMAC-SHA256 signature verification. Contains same PII as payload. Retention/TTL policy TBD (#42 ask 5).
254
+ :::
255
+
256
+ ## <a name="headers"></a>14. Property `headers`
257
+
258
+ | | |
259
+ | ------------ | ---------------- |
260
+ | **Type** | `object or null` |
261
+ | **Required** | No |
262
+
263
+ **Description:** Incoming HTTP headers. Includes provider signature header and Sentry trace. Sensitive.
264
+
265
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
266
+ | ------------------------------------ | ------- | ------ | ---------- | ---------- | ----------------- |
267
+ | - [](#headers_additionalProperties ) | No | string | No | - | - |
268
+
269
+ ### <a name="headers_additionalProperties"></a>14.1. Property `additionalProperties`
270
+
271
+ | | |
272
+ | ------------ | -------- |
273
+ | **Type** | `string` |
274
+ | **Required** | No |
275
+
276
+ :::note
277
+ Request headers including provider signature (e.g. "jeko-signature") and tracing headers. Sensitive — do not expose to clients.
278
+ :::
279
+
280
+ ## <a name="receivedAt"></a>15. Property `receivedAt`
281
+
282
+ | | |
283
+ | ------------------------- | --------------------------------- |
284
+ | **Type** | `object` |
285
+ | **Required** | Yes |
286
+ | **Additional properties** | Not allowed |
287
+ | **Defined in** | #/definitions/firestore-timestamp |
288
+
289
+ **Description:** When the webhook delivery was received by the backend.
290
+
291
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
292
+ | ------------------------------------------- | ------- | ------- | ---------- | ---------- | ----------------- |
293
+ | + [_seconds](#receivedAt__seconds ) | No | integer | No | - | - |
294
+ | + [_nanoseconds](#receivedAt__nanoseconds ) | No | integer | No | - | - |
295
+
296
+ ### <a name="receivedAt__seconds"></a>15.1. Property `_seconds`
297
+
298
+ | | |
299
+ | ------------ | --------- |
300
+ | **Type** | `integer` |
301
+ | **Required** | Yes |
302
+
303
+ | Restrictions | |
304
+ | ------------ | ---------------------- |
305
+ | **Minimum** | &ge; -9007199254740991 |
306
+ | **Maximum** | &le; 9007199254740991 |
307
+
308
+ ### <a name="receivedAt__nanoseconds"></a>15.2. Property `_nanoseconds`
309
+
310
+ | | |
311
+ | ------------ | --------- |
312
+ | **Type** | `integer` |
313
+ | **Required** | Yes |
314
+
315
+ | Restrictions | |
316
+ | ------------ | ---------------------- |
317
+ | **Minimum** | &ge; -9007199254740991 |
318
+ | **Maximum** | &le; 9007199254740991 |
319
+
320
+ ----------------------------------------------------------------------------------------------------------------------------
321
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:29 +0000
@@ -0,0 +1,191 @@
1
+ ---
2
+ title: "PaymentWebhookEndpoint"
3
+ sidebar_label: "PaymentWebhookEndpoint"
4
+ sidebar_position: 30
5
+ ---
6
+
7
+ # PaymentWebhookEndpoint
8
+
9
+ <details>
10
+ <summary>Example JSON</summary>
11
+
12
+ ```json
13
+ {
14
+ "token": "token",
15
+ "company": "company",
16
+ "provider": "wave",
17
+ "secret": "secret",
18
+ "active": true,
19
+ "createdAt": "createdAt"
20
+ }
21
+ ```
22
+
23
+ </details>
24
+
25
+
26
+ - [1. Property `token`](#token)
27
+ - [2. Property `company`](#company)
28
+ - [3. Property `provider`](#provider)
29
+ - [4. Property `secret`](#secret)
30
+ - [5. Property `active`](#active)
31
+ - [6. Property `createdAt`](#createdAt)
32
+ - [6.1. Property `firestore-timestamp`](#createdAt_anyOf_i0)
33
+ - [6.1.1. Property `_seconds`](#createdAt_anyOf_i0__seconds)
34
+ - [6.1.2. Property `_nanoseconds`](#createdAt_anyOf_i0__nanoseconds)
35
+ - [6.2. Property `item 1`](#createdAt_anyOf_i1)
36
+
37
+ | | |
38
+ | ------------------------- | -------------------------------------- |
39
+ | **Type** | `object` |
40
+ | **Required** | No |
41
+ | **Additional properties** | Not allowed |
42
+ | **Defined in** | #/definitions/payment-webhook-endpoint |
43
+
44
+ **Description:** PaymentWebhookEndpoint (GH#41). Collection: payment_webhook_endpoints/\{token\}. Top-level, not tenant-scoped. Provisioned by superadmin; used by the backend to verify inbound payment webhooks from Wave and Jeko. The delivery log collection (raw webhook payloads + verification outcomes) is tracked in GH#41 — shape TBD.
45
+
46
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
47
+ | -------------------------- | ------- | ---------------- | ---------- | ---------- | ------------------------------------------------------------------------------------------------------------ |
48
+ | + [token](#token ) | No | string | No | - | (Immutable) base64url-encoded 24-byte random token. Also the Firestore document ID and the URL path segment. |
49
+ | + [company](#company ) | No | string | No | - | (Immutable) Company slug (e.g. gerko_studios). Identifies the tenant that owns this endpoint. |
50
+ | + [provider](#provider ) | No | enum (of string) | No | - | (Immutable) Payment provider whose webhooks this endpoint accepts. |
51
+ | + [secret](#secret ) | No | string | No | - | Webhook signing secret for HMAC verification. Backend-only — never returned to dashboard or mobile clients. |
52
+ | + [active](#active ) | No | boolean | No | - | Whether this endpoint is currently active. Inactive endpoints reject incoming webhooks. |
53
+ | - [createdAt](#createdAt ) | No | Combination | No | - | (Read-only) When this endpoint was provisioned. |
54
+
55
+ ## <a name="token"></a>1. Property `token`
56
+
57
+ | | |
58
+ | ------------ | -------- |
59
+ | **Type** | `string` |
60
+ | **Required** | Yes |
61
+
62
+ **Description:** (Immutable) base64url-encoded 24-byte random token. Also the Firestore document ID and the URL path segment.
63
+
64
+ :::info Immutable
65
+ 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.
66
+ :::
67
+
68
+ ## <a name="company"></a>2. Property `company`
69
+
70
+ | | |
71
+ | ------------ | -------- |
72
+ | **Type** | `string` |
73
+ | **Required** | Yes |
74
+
75
+ **Description:** (Immutable) Company slug (e.g. gerko_studios). Identifies the tenant that owns this endpoint.
76
+
77
+ :::info Immutable
78
+ 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.
79
+ :::
80
+
81
+ ## <a name="provider"></a>3. Property `provider`
82
+
83
+ | | |
84
+ | ------------ | ------------------ |
85
+ | **Type** | `enum (of string)` |
86
+ | **Required** | Yes |
87
+
88
+ **Description:** (Immutable) Payment provider whose webhooks this endpoint accepts.
89
+
90
+ Must be one of:
91
+ * "wave"
92
+ * "jeko"
93
+
94
+ :::info Immutable
95
+ 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.
96
+ :::
97
+
98
+ ## <a name="secret"></a>4. Property `secret`
99
+
100
+ | | |
101
+ | ------------ | -------- |
102
+ | **Type** | `string` |
103
+ | **Required** | Yes |
104
+
105
+ **Description:** Webhook signing secret for HMAC verification. Backend-only — never returned to dashboard or mobile clients.
106
+
107
+ :::warning Server-set
108
+ 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.
109
+ :::
110
+
111
+ :::note
112
+ Provider-specific webhook signing secret. Used to verify HMAC-SHA256 signatures on inbound payloads. Never expose to clients.
113
+ :::
114
+
115
+ ## <a name="active"></a>5. Property `active`
116
+
117
+ | | |
118
+ | ------------ | --------- |
119
+ | **Type** | `boolean` |
120
+ | **Required** | Yes |
121
+
122
+ **Description:** Whether this endpoint is currently active. Inactive endpoints reject incoming webhooks.
123
+
124
+ ## <a name="createdAt"></a>6. Property `createdAt`
125
+
126
+ | | |
127
+ | ------------------------- | ---------------- |
128
+ | **Type** | `combining` |
129
+ | **Required** | No |
130
+ | **Additional properties** | Any type allowed |
131
+
132
+ **Description:** (Read-only) When this endpoint was provisioned.
133
+
134
+ | Any of(Option) |
135
+ | ------------------------------------------ |
136
+ | [firestore-timestamp](#createdAt_anyOf_i0) |
137
+ | [item 1](#createdAt_anyOf_i1) |
138
+
139
+ ### <a name="createdAt_anyOf_i0"></a>6.1. Property `firestore-timestamp`
140
+
141
+ | | |
142
+ | ------------------------- | --------------------------------- |
143
+ | **Type** | `object` |
144
+ | **Required** | No |
145
+ | **Additional properties** | Not allowed |
146
+ | **Defined in** | #/definitions/firestore-timestamp |
147
+
148
+ **Description:** Firestore Timestamp — Admin SDK form: \{ _seconds, _nanoseconds \}. See types/firestore.ts for REST API v1 and client SDK serialization notes (#10).
149
+
150
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
151
+ | --------------------------------------------------- | ------- | ------- | ---------- | ---------- | ----------------- |
152
+ | + [_seconds](#createdAt_anyOf_i0__seconds ) | No | integer | No | - | - |
153
+ | + [_nanoseconds](#createdAt_anyOf_i0__nanoseconds ) | No | integer | No | - | - |
154
+
155
+ #### <a name="createdAt_anyOf_i0__seconds"></a>6.1.1. Property `_seconds`
156
+
157
+ | | |
158
+ | ------------ | --------- |
159
+ | **Type** | `integer` |
160
+ | **Required** | Yes |
161
+
162
+ | Restrictions | |
163
+ | ------------ | ---------------------- |
164
+ | **Minimum** | &ge; -9007199254740991 |
165
+ | **Maximum** | &le; 9007199254740991 |
166
+
167
+ #### <a name="createdAt_anyOf_i0__nanoseconds"></a>6.1.2. Property `_nanoseconds`
168
+
169
+ | | |
170
+ | ------------ | --------- |
171
+ | **Type** | `integer` |
172
+ | **Required** | Yes |
173
+
174
+ | Restrictions | |
175
+ | ------------ | ---------------------- |
176
+ | **Minimum** | &ge; -9007199254740991 |
177
+ | **Maximum** | &le; 9007199254740991 |
178
+
179
+ ### <a name="createdAt_anyOf_i1"></a>6.2. Property `item 1`
180
+
181
+ | | |
182
+ | ------------ | ------ |
183
+ | **Type** | `null` |
184
+ | **Required** | No |
185
+
186
+ ----------------------------------------------------------------------------------------------------------------------------
187
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:29 +0000
188
+
189
+ :::warning Server-set
190
+ 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.
191
+ :::
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "Sale"
3
3
  sidebar_label: "Sale"
4
- sidebar_position: 25
4
+ sidebar_position: 31
5
5
  ---
6
6
 
7
7
  # Sale
@@ -524,7 +524,7 @@ Set at creation only. This field cannot be modified after the document is create
524
524
  | **Required** | No |
525
525
 
526
526
  ----------------------------------------------------------------------------------------------------------------------------
527
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 12:42:51 +0000
527
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:29 +0000
528
528
 
529
529
  :::warning Server-set
530
530
  Do not include in write requests. This field is set exclusively by the server (Firestore trigger or Admin SDK). Clients that send it will have the value silently ignored or may receive a validation error.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "SitePayment"
3
3
  sidebar_label: "SitePayment"
4
- sidebar_position: 27
4
+ sidebar_position: 33
5
5
  ---
6
6
 
7
7
  # SitePayment
@@ -197,4 +197,4 @@ Set at creation only. This field cannot be modified after the document is create
197
197
  | **Maximum** | &le; 9007199254740991 |
198
198
 
199
199
  ----------------------------------------------------------------------------------------------------------------------------
200
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 12:42:51 +0000
200
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:29 +0000
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "Site"
3
3
  sidebar_label: "Site"
4
- sidebar_position: 26
4
+ sidebar_position: 32
5
5
  ---
6
6
 
7
7
  # Site
@@ -546,7 +546,7 @@ Do not include in write requests. This field is set exclusively by the server (F
546
546
  **Description:** Timestamp of the most recent analytics event seen for this site.
547
547
 
548
548
  ----------------------------------------------------------------------------------------------------------------------------
549
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 12:42:51 +0000
549
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:29 +0000
550
550
 
551
551
  :::warning Server-set
552
552
  Do not include in write requests. This field is set exclusively by the server (Firestore trigger or Admin SDK). Clients that send it will have the value silently ignored or may receive a validation error.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "StocktakeItem"
3
3
  sidebar_label: "StocktakeItem"
4
- sidebar_position: 29
4
+ sidebar_position: 35
5
5
  ---
6
6
 
7
7
  # StocktakeItem
@@ -497,4 +497,4 @@ Read-time hint snapshot of the verifier's display name (GH#29 §3 / Q10).
497
497
  | **Required** | No |
498
498
 
499
499
  ----------------------------------------------------------------------------------------------------------------------------
500
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 12:42:51 +0000
500
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:29 +0000
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "Stocktake"
3
3
  sidebar_label: "Stocktake"
4
- sidebar_position: 28
4
+ sidebar_position: 34
5
5
  ---
6
6
 
7
7
  # Stocktake
@@ -642,7 +642,7 @@ Read-time hint snapshot of the completer's display name (GH#29 §3 / Q10).
642
642
  | **Required** | No |
643
643
 
644
644
  ----------------------------------------------------------------------------------------------------------------------------
645
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 12:42:51 +0000
645
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:29 +0000
646
646
 
647
647
  :::warning Server-set
648
648
  Do not include in write requests. This field is set exclusively by the server (Firestore trigger or Admin SDK). Clients that send it will have the value silently ignored or may receive a validation error.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "Ticket"
3
3
  sidebar_label: "Ticket"
4
- sidebar_position: 30
4
+ sidebar_position: 36
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-05-30 at 12:42:51 +0000
391
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:29 +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.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "User"
3
3
  sidebar_label: "User"
4
- sidebar_position: 31
4
+ sidebar_position: 37
5
5
  ---
6
6
 
7
7
  # User
@@ -242,7 +242,7 @@ Do not include in write requests. This field is set exclusively by the server (F
242
242
  | **Required** | No |
243
243
 
244
244
  ----------------------------------------------------------------------------------------------------------------------------
245
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 12:42:51 +0000
245
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:29 +0000
246
246
 
247
247
  :::warning Server-set
248
248
  Do not include in write requests. This field is set exclusively by the server (Firestore trigger or Admin SDK). Clients that send it will have the value silently ignored or may receive a validation error.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "WhatsappInboundMessage"
3
3
  sidebar_label: "WhatsappInboundMessage"
4
- sidebar_position: 32
4
+ sidebar_position: 38
5
5
  ---
6
6
 
7
7
  # WhatsappInboundMessage
@@ -122,6 +122,10 @@ Must be one of:
122
122
  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.
123
123
  :::
124
124
 
125
+ :::note
126
+ cmz = "IngenX - Chez Miss Zahoui", phone number ID 446424085225188, used for chez_miss_zahoui_* companies. val = "IngenX - Valets", phone number ID 425582173979125, used for all other companies. Templates are approved at WABA level — if cmz and val share a WABA ID, all templates are available to both. Routing logic: functions/src/orders/order.ts#isSender2Company. See messaging/whatsapp-platform-constraints (#50).
127
+ :::
128
+
125
129
  ## <a name="messageId"></a>4. Property `messageId`
126
130
 
127
131
  | | |
@@ -366,4 +370,4 @@ Do not include in write requests. This field is set exclusively by the server (F
366
370
  Specific value: `true`
367
371
 
368
372
  ----------------------------------------------------------------------------------------------------------------------------
369
- Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 12:42:51 +0000
373
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-30 at 13:57:29 +0000