@ingenx-io/valets-schema-mcp-server 0.1.6 → 0.1.8

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 (55) hide show
  1. package/data/docs/enums/attention-status.md +1 -1
  2. package/data/docs/enums/booking-status.md +1 -1
  3. package/data/docs/enums/customer-payment-status.md +1 -1
  4. package/data/docs/enums/customer-payment-target-type.md +1 -1
  5. package/data/docs/enums/delivery-type.md +1 -1
  6. package/data/docs/enums/deployment-link-type.md +1 -1
  7. package/data/docs/enums/event-status.md +1 -1
  8. package/data/docs/enums/fulfillment-status.md +1 -1
  9. package/data/docs/enums/loyalty-transaction-type.md +1 -1
  10. package/data/docs/enums/order-status.md +1 -1
  11. package/data/docs/enums/payment-method.md +1 -1
  12. package/data/docs/enums/payment-proof-status.md +1 -1
  13. package/data/docs/enums/payment-status.md +1 -1
  14. package/data/docs/enums/pending-issue.md +1 -1
  15. package/data/docs/enums/return-status.md +1 -1
  16. package/data/docs/enums/session-status.md +1 -1
  17. package/data/docs/enums/site-status.md +1 -1
  18. package/data/docs/enums/stocktake-frequency.md +1 -1
  19. package/data/docs/enums/stocktake-item-status.md +1 -1
  20. package/data/docs/enums/stocktake-status.md +1 -1
  21. package/data/docs/enums/ticket-status.md +1 -1
  22. package/data/docs/enums/waba-label.md +22 -0
  23. package/data/docs/index.md +4 -2
  24. package/data/docs/models/allowed-user.md +1 -1
  25. package/data/docs/models/analytics-backfill.md +1 -1
  26. package/data/docs/models/analytics-daily.md +1 -1
  27. package/data/docs/models/analytics-event.md +1 -1
  28. package/data/docs/models/analytics-hourly.md +1 -1
  29. package/data/docs/models/booking-version.md +1 -1
  30. package/data/docs/models/booking.md +1 -1
  31. package/data/docs/models/customer-payment-allocation.md +1 -1
  32. package/data/docs/models/customer-payment.md +1 -1
  33. package/data/docs/models/customer.md +1 -1
  34. package/data/docs/models/event.md +1 -1
  35. package/data/docs/models/loyalty-config.md +1 -1
  36. package/data/docs/models/loyalty-reward.md +1 -1
  37. package/data/docs/models/loyalty-status.md +1 -1
  38. package/data/docs/models/loyalty-transaction.md +1 -1
  39. package/data/docs/models/magic-link-request.md +1 -1
  40. package/data/docs/models/metrics-current.md +1 -1
  41. package/data/docs/models/metrics-daily.md +1 -1
  42. package/data/docs/models/metrics-monthly.md +1 -1
  43. package/data/docs/models/order-item.md +1 -1
  44. package/data/docs/models/order.md +1 -1
  45. package/data/docs/models/sale.md +1 -1
  46. package/data/docs/models/site-payment.md +1 -1
  47. package/data/docs/models/site.md +1 -1
  48. package/data/docs/models/stocktake-item.md +1 -1
  49. package/data/docs/models/stocktake.md +1 -1
  50. package/data/docs/models/ticket.md +1 -1
  51. package/data/docs/models/whatsapp-inbound-message.md +369 -0
  52. package/data/static/llms.txt +43 -1
  53. package/data/static/openapi.yaml +134 -0
  54. package/data/static/schemas.json +157 -1
  55. package/package.json +1 -1
@@ -0,0 +1,369 @@
1
+ ---
2
+ title: "WhatsappInboundMessage"
3
+ sidebar_label: "WhatsappInboundMessage"
4
+ sidebar_position: 28
5
+ ---
6
+
7
+ # WhatsappInboundMessage
8
+
9
+ <details>
10
+ <summary>Example JSON</summary>
11
+
12
+ ```json
13
+ {
14
+ "id": null,
15
+ "wabaId": "wab_ref123",
16
+ "waba": "waba",
17
+ "messageId": "mes_ref123",
18
+ "from": "from",
19
+ "type": "phone",
20
+ "timestamp": "timestamp",
21
+ "receivedAt": "receivedAt",
22
+ "text": null,
23
+ "mediaId": null,
24
+ "caption": null,
25
+ "storageUrl": null,
26
+ "context": null
27
+ }
28
+ ```
29
+
30
+ </details>
31
+
32
+
33
+ - [1. Property `id`](#id)
34
+ - [2. Property `wabaId`](#wabaId)
35
+ - [3. Property `waba`](#waba)
36
+ - [4. Property `messageId`](#messageId)
37
+ - [5. Property `from`](#from)
38
+ - [6. Property `type`](#type)
39
+ - [6.1. Property `item 0`](#type_anyOf_i0)
40
+ - [6.2. Property `item 1`](#type_anyOf_i1)
41
+ - [7. Property `timestamp`](#timestamp)
42
+ - [7.1. Property `_seconds`](#timestamp__seconds)
43
+ - [7.2. Property `_nanoseconds`](#timestamp__nanoseconds)
44
+ - [8. Property `receivedAt`](#receivedAt)
45
+ - [8.1. Property `_seconds`](#timestamp__seconds)
46
+ - [8.2. Property `_nanoseconds`](#timestamp__nanoseconds)
47
+ - [9. Property `text`](#text)
48
+ - [10. Property `mediaId`](#mediaId)
49
+ - [11. Property `caption`](#caption)
50
+ - [12. Property `storageUrl`](#storageUrl)
51
+ - [13. Property `context`](#context)
52
+ - [13.1. Property `id`](#context_id)
53
+ - [13.2. Property `from`](#context_from)
54
+ - [13.3. Property `forwarded`](#context_forwarded)
55
+
56
+ | | |
57
+ | ------------------------- | -------------------------------------- |
58
+ | **Type** | `object` |
59
+ | **Required** | No |
60
+ | **Additional properties** | Not allowed |
61
+ | **Defined in** | #/definitions/whatsapp-inbound-message |
62
+
63
+ **Description:** WhatsappInboundMessage — inbound WhatsApp message persisted from Meta Cloud API webhook (GH#36). Collection: whatsapp_inbound_messages/\{docId\} in ratenplate project. Top-level scope: company resolution happens post-ingestion.
64
+
65
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
66
+ | ---------------------------- | ------- | ---------------- | ---------- | ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- |
67
+ | - [id](#id ) | No | string or null | No | - | (Read-only) Firestore document ID — wamid from Meta Cloud API. |
68
+ | + [wabaId](#wabaId ) | No | string | No | - | (Immutable) Meta WABA ID identifying which business number received the message. |
69
+ | + [waba](#waba ) | No | enum (of string) | No | In #/definitions/waba-label | (Immutable) Human-readable WABA label (cmz \| val). See WabaLabel enum. |
70
+ | + [messageId](#messageId ) | No | string | No | - | (Immutable) WhatsApp message ID (wamid) returned by Meta — mirrors the document ID. |
71
+ | + [from](#from ) | No | string | No | - | (Immutable) Sender phone number in E.164 format. |
72
+ | + [type](#type ) | No | Combination | No | - | (Immutable) Meta message type. |
73
+ | + [timestamp](#timestamp ) | No | object | No | In #/definitions/firestore-timestamp | (Immutable) Message timestamp as reported by Meta. |
74
+ | + [receivedAt](#receivedAt ) | No | object | No | In #/definitions/firestore-timestamp | (Read-only) Server-side ingestion timestamp. |
75
+ | - [text](#text ) | No | string or null | No | - | Message body text. Present on type=text messages only. |
76
+ | - [mediaId](#mediaId ) | No | string or null | No | - | Meta media ID. Present on image, audio, video, document, sticker messages. |
77
+ | - [caption](#caption ) | No | string or null | No | - | Media caption text. Present when the sender included a caption. |
78
+ | - [storageUrl](#storageUrl ) | No | string or null | No | - | Durable Cloud Storage URL for the downloaded media binary. Present after the media has been fetched and stored server-side. |
79
+ | - [context](#context ) | No | object or null | No | - | Reply/forward context. Present on replies and forwarded messages. |
80
+
81
+ ## <a name="id"></a>1. Property `id`
82
+
83
+ | | |
84
+ | ------------ | ---------------- |
85
+ | **Type** | `string or null` |
86
+ | **Required** | No |
87
+
88
+ **Description:** (Read-only) Firestore document ID — wamid from Meta Cloud API.
89
+
90
+ :::warning Server-set
91
+ 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.
92
+ :::
93
+
94
+ ## <a name="wabaId"></a>2. Property `wabaId`
95
+
96
+ | | |
97
+ | ------------ | -------- |
98
+ | **Type** | `string` |
99
+ | **Required** | Yes |
100
+
101
+ **Description:** (Immutable) Meta WABA ID identifying which business number received the message.
102
+
103
+ :::info Immutable
104
+ 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.
105
+ :::
106
+
107
+ ## <a name="waba"></a>3. Property `waba`
108
+
109
+ | | |
110
+ | -------------- | ------------------------ |
111
+ | **Type** | `enum (of string)` |
112
+ | **Required** | Yes |
113
+ | **Defined in** | #/definitions/waba-label |
114
+
115
+ **Description:** (Immutable) Human-readable WABA label (cmz | val). See WabaLabel enum.
116
+
117
+ Must be one of:
118
+ * "cmz"
119
+ * "val"
120
+
121
+ :::info Immutable
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
+ :::
124
+
125
+ ## <a name="messageId"></a>4. Property `messageId`
126
+
127
+ | | |
128
+ | ------------ | -------- |
129
+ | **Type** | `string` |
130
+ | **Required** | Yes |
131
+
132
+ **Description:** (Immutable) WhatsApp message ID (wamid) returned by Meta — mirrors the document ID.
133
+
134
+ :::info Immutable
135
+ 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.
136
+ :::
137
+
138
+ ## <a name="from"></a>5. Property `from`
139
+
140
+ | | |
141
+ | ------------ | -------- |
142
+ | **Type** | `string` |
143
+ | **Required** | Yes |
144
+
145
+ **Description:** (Immutable) Sender phone number in E.164 format.
146
+
147
+ :::info Immutable
148
+ 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.
149
+ :::
150
+
151
+ ## <a name="type"></a>6. Property `type`
152
+
153
+ | | |
154
+ | ------------------------- | ---------------- |
155
+ | **Type** | `combining` |
156
+ | **Required** | Yes |
157
+ | **Additional properties** | Any type allowed |
158
+
159
+ **Description:** (Immutable) Meta message type.
160
+
161
+ | Any of(Option) |
162
+ | ------------------------ |
163
+ | [item 0](#type_anyOf_i0) |
164
+ | [item 1](#type_anyOf_i1) |
165
+
166
+ ### <a name="type_anyOf_i0"></a>6.1. Property `item 0`
167
+
168
+ | | |
169
+ | ------------ | ------------------ |
170
+ | **Type** | `enum (of string)` |
171
+ | **Required** | No |
172
+
173
+ Must be one of:
174
+ * "text"
175
+ * "image"
176
+ * "audio"
177
+ * "video"
178
+ * "document"
179
+ * "sticker"
180
+ * "reaction"
181
+ * "location"
182
+ * "contacts"
183
+ * "interactive"
184
+ * "button"
185
+ * "order"
186
+ * "system"
187
+ * "unsupported"
188
+
189
+ ### <a name="type_anyOf_i1"></a>6.2. Property `item 1`
190
+
191
+ | | |
192
+ | ------------ | -------- |
193
+ | **Type** | `string` |
194
+ | **Required** | No |
195
+
196
+ :::info Immutable
197
+ 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.
198
+ :::
199
+
200
+ ## <a name="timestamp"></a>7. Property `timestamp`
201
+
202
+ | | |
203
+ | ------------------------- | --------------------------------- |
204
+ | **Type** | `object` |
205
+ | **Required** | Yes |
206
+ | **Additional properties** | Not allowed |
207
+ | **Defined in** | #/definitions/firestore-timestamp |
208
+
209
+ **Description:** (Immutable) Message timestamp as reported by Meta.
210
+
211
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
212
+ | ------------------------------------------ | ------- | ------- | ---------- | ---------- | ----------------- |
213
+ | + [_seconds](#timestamp__seconds ) | No | integer | No | - | - |
214
+ | + [_nanoseconds](#timestamp__nanoseconds ) | No | integer | No | - | - |
215
+
216
+ ### <a name="timestamp__seconds"></a>7.1. Property `_seconds`
217
+
218
+ | | |
219
+ | ------------ | --------- |
220
+ | **Type** | `integer` |
221
+ | **Required** | Yes |
222
+
223
+ | Restrictions | |
224
+ | ------------ | ---------------------- |
225
+ | **Minimum** | &ge; -9007199254740991 |
226
+ | **Maximum** | &le; 9007199254740991 |
227
+
228
+ ### <a name="timestamp__nanoseconds"></a>7.2. Property `_nanoseconds`
229
+
230
+ | | |
231
+ | ------------ | --------- |
232
+ | **Type** | `integer` |
233
+ | **Required** | Yes |
234
+
235
+ | Restrictions | |
236
+ | ------------ | ---------------------- |
237
+ | **Minimum** | &ge; -9007199254740991 |
238
+ | **Maximum** | &le; 9007199254740991 |
239
+
240
+ :::info Immutable
241
+ 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.
242
+ :::
243
+
244
+ ## <a name="receivedAt"></a>8. Property `receivedAt`
245
+
246
+ | | |
247
+ | ------------------------- | --------------------------------- |
248
+ | **Type** | `object` |
249
+ | **Required** | Yes |
250
+ | **Additional properties** | Not allowed |
251
+ | **Defined in** | #/definitions/firestore-timestamp |
252
+
253
+ **Description:** (Read-only) Server-side ingestion timestamp.
254
+
255
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
256
+ | ------------------------------------------ | ------- | ------- | ---------- | ---------- | ----------------- |
257
+ | + [_seconds](#timestamp__seconds ) | No | integer | No | - | - |
258
+ | + [_nanoseconds](#timestamp__nanoseconds ) | No | integer | No | - | - |
259
+
260
+ ### <a name="timestamp__seconds"></a>8.1. Property `_seconds`
261
+
262
+ | | |
263
+ | ------------ | --------- |
264
+ | **Type** | `integer` |
265
+ | **Required** | Yes |
266
+
267
+ | Restrictions | |
268
+ | ------------ | ---------------------- |
269
+ | **Minimum** | &ge; -9007199254740991 |
270
+ | **Maximum** | &le; 9007199254740991 |
271
+
272
+ ### <a name="timestamp__nanoseconds"></a>8.2. Property `_nanoseconds`
273
+
274
+ | | |
275
+ | ------------ | --------- |
276
+ | **Type** | `integer` |
277
+ | **Required** | Yes |
278
+
279
+ | Restrictions | |
280
+ | ------------ | ---------------------- |
281
+ | **Minimum** | &ge; -9007199254740991 |
282
+ | **Maximum** | &le; 9007199254740991 |
283
+
284
+ :::warning Server-set
285
+ 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.
286
+ :::
287
+
288
+ ## <a name="text"></a>9. Property `text`
289
+
290
+ | | |
291
+ | ------------ | ---------------- |
292
+ | **Type** | `string or null` |
293
+ | **Required** | No |
294
+
295
+ **Description:** Message body text. Present on type=text messages only.
296
+
297
+ ## <a name="mediaId"></a>10. Property `mediaId`
298
+
299
+ | | |
300
+ | ------------ | ---------------- |
301
+ | **Type** | `string or null` |
302
+ | **Required** | No |
303
+
304
+ **Description:** Meta media ID. Present on image, audio, video, document, sticker messages.
305
+
306
+ ## <a name="caption"></a>11. Property `caption`
307
+
308
+ | | |
309
+ | ------------ | ---------------- |
310
+ | **Type** | `string or null` |
311
+ | **Required** | No |
312
+
313
+ **Description:** Media caption text. Present when the sender included a caption.
314
+
315
+ ## <a name="storageUrl"></a>12. Property `storageUrl`
316
+
317
+ | | |
318
+ | ------------ | ---------------- |
319
+ | **Type** | `string or null` |
320
+ | **Required** | No |
321
+
322
+ **Description:** Durable Cloud Storage URL for the downloaded media binary. Present after the media has been fetched and stored server-side.
323
+
324
+ ## <a name="context"></a>13. Property `context`
325
+
326
+ | | |
327
+ | ------------ | ---------------- |
328
+ | **Type** | `object or null` |
329
+ | **Required** | No |
330
+
331
+ **Description:** Reply/forward context. Present on replies and forwarded messages.
332
+
333
+ | Property | Pattern | Type | Deprecated | Definition | Title/Description |
334
+ | ---------------------------------- | ------- | ------ | ---------- | ---------- | -------------------------------------------------------- |
335
+ | - [id](#context_id ) | No | string | No | - | wamid of the quoted/replied-to message. |
336
+ | - [from](#context_from ) | No | string | No | - | Sender phone number of the quoted message. |
337
+ | - [forwarded](#context_forwarded ) | No | const | No | - | Present (true) when Meta marks the message as forwarded. |
338
+
339
+ ### <a name="context_id"></a>13.1. Property `id`
340
+
341
+ | | |
342
+ | ------------ | -------- |
343
+ | **Type** | `string` |
344
+ | **Required** | No |
345
+
346
+ **Description:** wamid of the quoted/replied-to message.
347
+
348
+ ### <a name="context_from"></a>13.2. Property `from`
349
+
350
+ | | |
351
+ | ------------ | -------- |
352
+ | **Type** | `string` |
353
+ | **Required** | No |
354
+
355
+ **Description:** Sender phone number of the quoted message.
356
+
357
+ ### <a name="context_forwarded"></a>13.3. Property `forwarded`
358
+
359
+ | | |
360
+ | ------------ | ------- |
361
+ | **Type** | `const` |
362
+ | **Required** | No |
363
+
364
+ **Description:** Present (true) when Meta marks the message as forwarded.
365
+
366
+ Specific value: `true`
367
+
368
+ ----------------------------------------------------------------------------------------------------------------------------
369
+ Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-15 at 17:25:23 +0000
@@ -4,7 +4,7 @@
4
4
  > Source of truth: Zod schemas in packages/schema/src/
5
5
  > All Firestore documents are scoped under companies/{companyId}/
6
6
 
7
- > Generated: 2026-05-05
7
+ > Generated: 2026-05-15
8
8
 
9
9
  ---
10
10
 
@@ -94,6 +94,10 @@ Values: PENDING, IN_PROGRESS, COMPLETED, CANCELLED
94
94
  Event ticket status (D32). VALID = active and unused.
95
95
  Values: VALID, USED, CANCELLED
96
96
 
97
+ ### WabaLabel
98
+ Human-readable WABA label identifying which Meta business number received the message (GH#36).
99
+ Values: cmz, val
100
+
97
101
  ---
98
102
 
99
103
  ## Models
@@ -1468,6 +1472,44 @@ Example:
1468
1472
  }
1469
1473
  ```
1470
1474
 
1475
+ ### WhatsappInboundMessage
1476
+ Fields: 13 (7 required)
1477
+
1478
+ | Field | Type | Required | Description |
1479
+ |-------|------|----------|-------------|
1480
+ | id | ['string', 'null'] | no | (Read-only) Firestore document ID — wamid from Meta Cloud API. |
1481
+ | wabaId | string | yes | (Immutable) Meta WABA ID identifying which business number received the message. |
1482
+ | waba | WabaLabel | yes | (Immutable) Human-readable WABA label (cmz | val). See WabaLabel enum. |
1483
+ | messageId | string | yes | (Immutable) WhatsApp message ID (wamid) returned by Meta — mirrors the document ID. |
1484
+ | from | string | yes | (Immutable) Sender phone number in E.164 format. |
1485
+ | type | any | yes | (Immutable) Meta message type. |
1486
+ | timestamp | FirestoreTimestamp | yes | (Immutable) Message timestamp as reported by Meta. |
1487
+ | receivedAt | FirestoreTimestamp | yes | (Read-only) Server-side ingestion timestamp. |
1488
+ | text | ['string', 'null'] | no | Message body text. Present on type=text messages only. |
1489
+ | mediaId | ['string', 'null'] | no | Meta media ID. Present on image, audio, video, document, sticker messages. |
1490
+ | caption | ['string', 'null'] | no | Media caption text. Present when the sender included a caption. |
1491
+ | storageUrl | ['string', 'null'] | no | Durable Cloud Storage URL for the downloaded media binary. Present after the media has been fetched and stored server-side. |
1492
+ | context | ['object', 'null'] | no | Reply/forward context. Present on replies and forwarded messages. |
1493
+
1494
+ Example:
1495
+ ```json
1496
+ {
1497
+ "id": null,
1498
+ "wabaId": "wab_ref123",
1499
+ "waba": "waba",
1500
+ "messageId": "mes_ref123",
1501
+ "from": "from",
1502
+ "type": "phone",
1503
+ "timestamp": "timestamp",
1504
+ "receivedAt": "receivedAt",
1505
+ "text": null,
1506
+ "mediaId": null,
1507
+ "caption": null,
1508
+ "storageUrl": null,
1509
+ "context": null
1510
+ }
1511
+ ```
1512
+
1471
1513
  ---
1472
1514
 
1473
1515
  ## Proposed (Work In Progress)
@@ -235,6 +235,13 @@ components:
235
235
  - USED
236
236
  - CANCELLED
237
237
  description: Event ticket status (D32). VALID = active and unused.
238
+ WabaLabel:
239
+ type: string
240
+ enum:
241
+ - cmz
242
+ - val
243
+ description: Human-readable WABA label identifying which Meta business number
244
+ received the message (GH#36).
238
245
  FirestoreTimestamp:
239
246
  type: object
240
247
  properties:
@@ -4371,6 +4378,133 @@ components:
4371
4378
  description: Write payload for partial update (PATCH) of a Ticket document.
4372
4379
  All fields optional. Fields marked `readOnly` or `x-immutable` must not be
4373
4380
  sent.
4381
+ WhatsappInboundMessage:
4382
+ type: object
4383
+ properties:
4384
+ id:
4385
+ readOnly: true
4386
+ description: (Read-only) Firestore document ID — wamid from Meta Cloud API.
4387
+ type:
4388
+ - string
4389
+ - 'null'
4390
+ wabaId:
4391
+ type: string
4392
+ x-immutable: true
4393
+ description: (Immutable) Meta WABA ID identifying which business number
4394
+ received the message.
4395
+ waba:
4396
+ $ref: '#/components/schemas/WabaLabel'
4397
+ description: (Immutable) Human-readable WABA label (cmz | val). See WabaLabel
4398
+ enum.
4399
+ x-immutable: true
4400
+ messageId:
4401
+ type: string
4402
+ x-immutable: true
4403
+ description: (Immutable) WhatsApp message ID (wamid) returned by Meta —
4404
+ mirrors the document ID.
4405
+ from:
4406
+ type: string
4407
+ x-immutable: true
4408
+ description: (Immutable) Sender phone number in E.164 format.
4409
+ type:
4410
+ anyOf:
4411
+ - type: string
4412
+ enum:
4413
+ - text
4414
+ - image
4415
+ - audio
4416
+ - video
4417
+ - document
4418
+ - sticker
4419
+ - reaction
4420
+ - location
4421
+ - contacts
4422
+ - interactive
4423
+ - button
4424
+ - order
4425
+ - system
4426
+ - unsupported
4427
+ - type: string
4428
+ description: (Immutable) Meta message type.
4429
+ x-immutable: true
4430
+ timestamp:
4431
+ $ref: '#/components/schemas/FirestoreTimestamp'
4432
+ description: (Immutable) Message timestamp as reported by Meta.
4433
+ x-immutable: true
4434
+ receivedAt:
4435
+ $ref: '#/components/schemas/FirestoreTimestamp'
4436
+ description: (Read-only) Server-side ingestion timestamp.
4437
+ readOnly: true
4438
+ text:
4439
+ description: Message body text. Present on type=text messages only.
4440
+ type:
4441
+ - string
4442
+ - 'null'
4443
+ mediaId:
4444
+ description: Meta media ID. Present on image, audio, video, document, sticker
4445
+ messages.
4446
+ type:
4447
+ - string
4448
+ - 'null'
4449
+ caption:
4450
+ description: Media caption text. Present when the sender included a caption.
4451
+ type:
4452
+ - string
4453
+ - 'null'
4454
+ storageUrl:
4455
+ description: Durable Cloud Storage URL for the downloaded media binary.
4456
+ Present after the media has been fetched and stored server-side.
4457
+ type:
4458
+ - string
4459
+ - 'null'
4460
+ context:
4461
+ description: Reply/forward context. Present on replies and forwarded messages.
4462
+ type:
4463
+ - object
4464
+ - 'null'
4465
+ properties:
4466
+ id:
4467
+ description: wamid of the quoted/replied-to message.
4468
+ type: string
4469
+ from:
4470
+ description: Sender phone number of the quoted message.
4471
+ type: string
4472
+ forwarded:
4473
+ description: Present (true) when Meta marks the message as forwarded.
4474
+ type: boolean
4475
+ const: true
4476
+ additionalProperties: false
4477
+ required:
4478
+ - wabaId
4479
+ - waba
4480
+ - messageId
4481
+ - from
4482
+ - type
4483
+ - timestamp
4484
+ - receivedAt
4485
+ additionalProperties: false
4486
+ description: 'WhatsappInboundMessage — inbound WhatsApp message persisted from
4487
+ Meta Cloud API webhook (GH#36). Collection: whatsapp_inbound_messages/{docId}
4488
+ in ratenplate project. Top-level scope: company resolution happens post-ingestion.'
4489
+ WhatsappInboundMessageCreate:
4490
+ allOf:
4491
+ - $ref: '#/components/schemas/WhatsappInboundMessage'
4492
+ description: Write payload for creating a new WhatsappInboundMessage document.
4493
+ Fields marked `readOnly` are server-set and must not be included. Fields marked
4494
+ `x-immutable` may be set once at creation.
4495
+ required:
4496
+ - wabaId
4497
+ - waba
4498
+ - messageId
4499
+ - from
4500
+ - type
4501
+ - timestamp
4502
+ WhatsappInboundMessageUpdate:
4503
+ allOf:
4504
+ - $ref: '#/components/schemas/WhatsappInboundMessage'
4505
+ description: Write payload for partial update (PATCH) of a WhatsappInboundMessage
4506
+ document. All fields optional. Fields marked `readOnly` or `x-immutable` must
4507
+ not be sent.
4374
4508
  PaymentSummary:
4375
4509
  type: object
4376
4510
  properties: