@ingenx-io/valets-schema-mcp-server 0.1.9 → 0.2.0
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.
- package/data/docs/collections/firestore-paths.md +20 -0
- package/data/docs/enums/attention-status.md +1 -1
- package/data/docs/enums/booking-status.md +1 -1
- package/data/docs/enums/customer-payment-status.md +1 -1
- package/data/docs/enums/customer-payment-target-type.md +1 -1
- package/data/docs/enums/delivery-type.md +1 -1
- package/data/docs/enums/deployment-link-type.md +1 -1
- package/data/docs/enums/event-status.md +1 -1
- package/data/docs/enums/fulfillment-status.md +1 -1
- package/data/docs/enums/loyalty-transaction-type.md +1 -1
- package/data/docs/enums/order-status.md +1 -1
- package/data/docs/enums/outbound-message-format.md +22 -0
- package/data/docs/enums/outbound-message-purpose.md +24 -0
- package/data/docs/enums/outbound-message-status.md +4 -4
- package/data/docs/enums/payment-method.md +2 -2
- package/data/docs/enums/payment-proof-status.md +2 -2
- package/data/docs/enums/payment-status.md +2 -2
- package/data/docs/enums/pending-issue.md +2 -2
- package/data/docs/enums/return-status.md +2 -2
- package/data/docs/enums/session-status.md +2 -2
- package/data/docs/enums/site-status.md +2 -2
- package/data/docs/enums/stocktake-frequency.md +2 -2
- package/data/docs/enums/stocktake-item-status.md +2 -2
- package/data/docs/enums/stocktake-status.md +2 -2
- package/data/docs/enums/ticket-status.md +2 -2
- package/data/docs/enums/waba-label.md +2 -2
- package/data/docs/enums/whatsapp-template-status.md +26 -0
- package/data/docs/index.md +9 -5
- package/data/docs/models/allowed-user.md +1 -1
- package/data/docs/models/analytics-backfill.md +1 -1
- package/data/docs/models/analytics-daily.md +1 -1
- package/data/docs/models/analytics-event.md +1 -1
- package/data/docs/models/analytics-hourly.md +1 -1
- package/data/docs/models/booking-version.md +1 -1
- package/data/docs/models/booking.md +1 -1
- package/data/docs/models/customer-payment-allocation.md +1 -1
- package/data/docs/models/customer-payment.md +1 -1
- package/data/docs/models/customer.md +1 -1
- package/data/docs/models/event.md +1 -1
- package/data/docs/models/loyalty-config.md +1 -1
- package/data/docs/models/loyalty-reward.md +1 -1
- package/data/docs/models/loyalty-status.md +1 -1
- package/data/docs/models/loyalty-transaction.md +1 -1
- package/data/docs/models/magic-link-request.md +1 -1
- package/data/docs/models/metrics-current.md +1 -1
- package/data/docs/models/metrics-daily.md +1 -1
- package/data/docs/models/metrics-monthly.md +1 -1
- package/data/docs/models/order-item.md +1 -1
- package/data/docs/models/order.md +1 -1
- package/data/docs/models/sale.md +1 -1
- package/data/docs/models/site-payment.md +1 -1
- package/data/docs/models/site.md +1 -1
- package/data/docs/models/stocktake-item.md +1 -1
- package/data/docs/models/stocktake.md +1 -1
- package/data/docs/models/ticket.md +1 -1
- package/data/docs/models/whatsapp-inbound-message.md +1 -1
- package/data/docs/models/whatsapp-outbound-lifecycle-event.md +310 -0
- package/data/docs/models/whatsapp-outbound-message.md +396 -172
- package/data/docs/models/whatsapp-template.md +177 -0
- package/data/static/llms.txt +110 -32
- package/data/static/openapi.yaml +275 -66
- package/data/static/schemas.json +355 -69
- package/package.json +1 -1
- package/data/docs/enums/outbound-message-kind.md +0 -22
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "WhatsappOutboundMessage"
|
|
3
3
|
sidebar_label: "WhatsappOutboundMessage"
|
|
4
|
-
sidebar_position:
|
|
4
|
+
sidebar_position: 30
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# WhatsappOutboundMessage
|
|
@@ -12,21 +12,25 @@ sidebar_position: 29
|
|
|
12
12
|
```json
|
|
13
13
|
{
|
|
14
14
|
"id": null,
|
|
15
|
-
"messageId": "mes_ref123",
|
|
16
15
|
"to": "to",
|
|
17
16
|
"waba": "waba",
|
|
18
17
|
"wabaId": "wab_ref123",
|
|
19
|
-
"sentAt": "sentAt",
|
|
20
|
-
"phoneNumberId": "pho_ref123",
|
|
21
18
|
"kind": "kind",
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"appId": null,
|
|
19
|
+
"text": null,
|
|
20
|
+
"template": null,
|
|
21
|
+
"purpose": "purpose",
|
|
26
22
|
"orderUuid": null,
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
"sentBy": {
|
|
24
|
+
"uid": "user_u8x92kqm"
|
|
25
|
+
},
|
|
26
|
+
"createdAt": "createdAt",
|
|
27
|
+
"status": "status",
|
|
28
|
+
"wamid": null,
|
|
29
|
+
"error": null,
|
|
30
|
+
"sentAt": "sentAt",
|
|
31
|
+
"deliveredAt": "deliveredAt",
|
|
32
|
+
"readAt": "readAt",
|
|
33
|
+
"failedAt": "failedAt"
|
|
30
34
|
}
|
|
31
35
|
```
|
|
32
36
|
|
|
@@ -34,26 +38,41 @@ sidebar_position: 29
|
|
|
34
38
|
|
|
35
39
|
|
|
36
40
|
- [1. Property `id`](#id)
|
|
37
|
-
- [2. Property `
|
|
38
|
-
- [3. Property `
|
|
39
|
-
- [4. Property `
|
|
40
|
-
- [5. Property `
|
|
41
|
-
- [6. Property `
|
|
42
|
-
|
|
43
|
-
- [
|
|
44
|
-
- [7. Property `
|
|
45
|
-
- [
|
|
46
|
-
- [
|
|
47
|
-
- [
|
|
48
|
-
- [
|
|
49
|
-
- [
|
|
50
|
-
- [
|
|
51
|
-
- [
|
|
52
|
-
- [
|
|
53
|
-
- [
|
|
54
|
-
- [
|
|
55
|
-
- [
|
|
56
|
-
- [
|
|
41
|
+
- [2. Property `to`](#to)
|
|
42
|
+
- [3. Property `waba`](#waba)
|
|
43
|
+
- [4. Property `wabaId`](#wabaId)
|
|
44
|
+
- [5. Property `kind`](#kind)
|
|
45
|
+
- [6. Property `text`](#text)
|
|
46
|
+
- [7. Property `template`](#template)
|
|
47
|
+
- [7.1. Property `name`](#template_name)
|
|
48
|
+
- [7.2. Property `language`](#template_language)
|
|
49
|
+
- [7.3. Property `variables`](#template_variables)
|
|
50
|
+
- [7.3.1. Property `additionalProperties`](#template_variables_additionalProperties)
|
|
51
|
+
- [8. Property `purpose`](#purpose)
|
|
52
|
+
- [8.1. Property `outbound-message-purpose`](#purpose_anyOf_i0)
|
|
53
|
+
- [8.2. Property `item 1`](#purpose_anyOf_i1)
|
|
54
|
+
- [9. Property `orderUuid`](#orderUuid)
|
|
55
|
+
- [10. Property `sentBy`](#sentBy)
|
|
56
|
+
- [10.1. Property `uid`](#sentBy_uid)
|
|
57
|
+
- [10.2. Property `email`](#sentBy_email)
|
|
58
|
+
- [11. Property `createdAt`](#createdAt)
|
|
59
|
+
- [11.1. Property `_seconds`](#createdAt__seconds)
|
|
60
|
+
- [11.2. Property `_nanoseconds`](#createdAt__nanoseconds)
|
|
61
|
+
- [12. Property `status`](#status)
|
|
62
|
+
- [13. Property `wamid`](#wamid)
|
|
63
|
+
- [14. Property `error`](#error)
|
|
64
|
+
- [15. Property `sentAt`](#sentAt)
|
|
65
|
+
- [15.1. Property `firestore-timestamp`](#sentAt_anyOf_i0)
|
|
66
|
+
- [15.2. Property `item 1`](#sentAt_anyOf_i1)
|
|
67
|
+
- [16. Property `deliveredAt`](#deliveredAt)
|
|
68
|
+
- [16.1. Property `firestore-timestamp`](#deliveredAt_anyOf_i0)
|
|
69
|
+
- [16.2. Property `item 1`](#deliveredAt_anyOf_i1)
|
|
70
|
+
- [17. Property `readAt`](#readAt)
|
|
71
|
+
- [17.1. Property `firestore-timestamp`](#readAt_anyOf_i0)
|
|
72
|
+
- [17.2. Property `item 1`](#readAt_anyOf_i1)
|
|
73
|
+
- [18. Property `failedAt`](#failedAt)
|
|
74
|
+
- [18.1. Property `firestore-timestamp`](#failedAt_anyOf_i0)
|
|
75
|
+
- [18.2. Property `item 1`](#failedAt_anyOf_i1)
|
|
57
76
|
|
|
58
77
|
| | |
|
|
59
78
|
| ------------------------- | --------------------------------------- |
|
|
@@ -62,26 +81,28 @@ sidebar_position: 29
|
|
|
62
81
|
| **Additional properties** | Not allowed |
|
|
63
82
|
| **Defined in** | #/definitions/whatsapp-outbound-message |
|
|
64
83
|
|
|
65
|
-
**Description:** WhatsappOutboundMessage —
|
|
66
|
-
|
|
67
|
-
| Property
|
|
68
|
-
|
|
|
69
|
-
| - [id](#id )
|
|
70
|
-
| + [
|
|
71
|
-
| + [
|
|
72
|
-
| + [
|
|
73
|
-
| + [
|
|
74
|
-
|
|
|
75
|
-
|
|
|
76
|
-
|
|
|
77
|
-
|
|
|
78
|
-
| + [
|
|
79
|
-
|
|
|
80
|
-
|
|
|
81
|
-
| - [
|
|
82
|
-
| - [
|
|
83
|
-
| - [
|
|
84
|
-
| - [
|
|
84
|
+
**Description:** WhatsappOutboundMessage — Firestore-as-the-bus outbox doc (GH#43). Collection: whatsapp_outbound_messages/\{docId\}. Top-level scope; mirrors WhatsappInboundMessage. Dashboard enqueues `queued`; backend sends and owns the lifecycle.
|
|
85
|
+
|
|
86
|
+
| Property | Pattern | Type | Deprecated | Definition | Title/Description |
|
|
87
|
+
| ------------------------------ | ------- | ---------------- | ---------- | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
|
88
|
+
| - [id](#id ) | No | string or null | No | - | (Read-only) Firestore document ID — auto-generated at enqueue time. |
|
|
89
|
+
| + [to](#to ) | No | string | No | - | (Immutable) Recipient phone number in E.164 format. Must match the inbound \`from\` for the same conversation. |
|
|
90
|
+
| + [waba](#waba ) | No | enum (of string) | No | In #/definitions/waba-label | (Immutable) WABA that will send the message. Mirrors inbound \`waba\`. |
|
|
91
|
+
| + [wabaId](#wabaId ) | No | string | No | - | (Immutable) Meta WABA ID. Mirrors inbound \`wabaId\`. |
|
|
92
|
+
| + [kind](#kind ) | No | enum (of string) | No | In #/definitions/outbound-message-format | (Immutable) Message format: \`text\` or \`template\`. Set \`text\` xor \`template\` to match. |
|
|
93
|
+
| - [text](#text ) | No | string or null | No | - | Free-form message body. Present only when kind=text. |
|
|
94
|
+
| - [template](#template ) | No | object or null | No | - | Template send payload. Present only when kind=template. |
|
|
95
|
+
| - [purpose](#purpose ) | No | Combination | No | - | Business purpose (otp \| review_request \| adhoc \| conversational). Optional. |
|
|
96
|
+
| - [orderUuid](#orderUuid ) | No | string or null | No | - | Order reference. Present on review_request messages. |
|
|
97
|
+
| + [sentBy](#sentBy ) | No | object | No | - | (Immutable) Dashboard actor who enqueued the message. |
|
|
98
|
+
| + [createdAt](#createdAt ) | No | object | No | In #/definitions/firestore-timestamp | (Immutable) Enqueue timestamp, set by the dashboard at create. |
|
|
99
|
+
| + [status](#status ) | No | enum (of string) | No | In #/definitions/outbound-message-status | Delivery status. Created as \`queued\` by the dashboard; updated in place by the backend. |
|
|
100
|
+
| - [wamid](#wamid ) | No | string or null | No | - | (Read-only) WhatsApp message ID returned by Meta once the backend sends. Absent while queued or on failure. |
|
|
101
|
+
| - [error](#error ) | No | string or null | No | - | (Read-only) Human-readable failure reason. Present on status=failed. Raw Meta error detail lives in the lifecycle_events subcollection. |
|
|
102
|
+
| - [sentAt](#sentAt ) | No | Combination | No | - | (Read-only) When the backend sent the message to Meta. |
|
|
103
|
+
| - [deliveredAt](#deliveredAt ) | No | Combination | No | - | (Read-only) When Meta reported delivery. |
|
|
104
|
+
| - [readAt](#readAt ) | No | Combination | No | - | (Read-only) When Meta reported the recipient read the message. |
|
|
105
|
+
| - [failedAt](#failedAt ) | No | Combination | No | - | (Read-only) When the send failed. |
|
|
85
106
|
|
|
86
107
|
## <a name="id"></a>1. Property `id`
|
|
87
108
|
|
|
@@ -90,39 +111,26 @@ sidebar_position: 29
|
|
|
90
111
|
| **Type** | `string or null` |
|
|
91
112
|
| **Required** | No |
|
|
92
113
|
|
|
93
|
-
**Description:** (Read-only) Firestore document ID —
|
|
114
|
+
**Description:** (Read-only) Firestore document ID — auto-generated at enqueue time.
|
|
94
115
|
|
|
95
116
|
:::warning Server-set
|
|
96
117
|
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.
|
|
97
118
|
:::
|
|
98
119
|
|
|
99
|
-
## <a name="
|
|
100
|
-
|
|
101
|
-
| | |
|
|
102
|
-
| ------------ | -------- |
|
|
103
|
-
| **Type** | `string` |
|
|
104
|
-
| **Required** | Yes |
|
|
105
|
-
|
|
106
|
-
**Description:** (Immutable) WhatsApp message ID (wamid) on success; generated UUID on send failure.
|
|
107
|
-
|
|
108
|
-
:::info Immutable
|
|
109
|
-
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.
|
|
110
|
-
:::
|
|
111
|
-
|
|
112
|
-
## <a name="to"></a>3. Property `to`
|
|
120
|
+
## <a name="to"></a>2. Property `to`
|
|
113
121
|
|
|
114
122
|
| | |
|
|
115
123
|
| ------------ | -------- |
|
|
116
124
|
| **Type** | `string` |
|
|
117
125
|
| **Required** | Yes |
|
|
118
126
|
|
|
119
|
-
**Description:** (Immutable) Recipient phone number in E.164 format.
|
|
127
|
+
**Description:** (Immutable) Recipient phone number in E.164 format. Must match the inbound `from` for the same conversation.
|
|
120
128
|
|
|
121
129
|
:::info Immutable
|
|
122
130
|
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
131
|
:::
|
|
124
132
|
|
|
125
|
-
## <a name="waba"></a>
|
|
133
|
+
## <a name="waba"></a>3. Property `waba`
|
|
126
134
|
|
|
127
135
|
| | |
|
|
128
136
|
| -------------- | ------------------------ |
|
|
@@ -130,7 +138,7 @@ Set at creation only. This field cannot be modified after the document is create
|
|
|
130
138
|
| **Required** | Yes |
|
|
131
139
|
| **Defined in** | #/definitions/waba-label |
|
|
132
140
|
|
|
133
|
-
**Description:** (Immutable) WABA that
|
|
141
|
+
**Description:** (Immutable) WABA that will send the message. Mirrors inbound `waba`.
|
|
134
142
|
|
|
135
143
|
Must be one of:
|
|
136
144
|
* "cmz"
|
|
@@ -140,7 +148,7 @@ Must be one of:
|
|
|
140
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.
|
|
141
149
|
:::
|
|
142
150
|
|
|
143
|
-
## <a name="wabaId"></a>
|
|
151
|
+
## <a name="wabaId"></a>4. Property `wabaId`
|
|
144
152
|
|
|
145
153
|
| | |
|
|
146
154
|
| ------------ | -------- |
|
|
@@ -153,95 +161,236 @@ Set at creation only. This field cannot be modified after the document is create
|
|
|
153
161
|
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.
|
|
154
162
|
:::
|
|
155
163
|
|
|
156
|
-
## <a name="
|
|
164
|
+
## <a name="kind"></a>5. Property `kind`
|
|
157
165
|
|
|
158
|
-
|
|
|
159
|
-
|
|
|
160
|
-
| **Type**
|
|
161
|
-
| **Required**
|
|
162
|
-
| **
|
|
163
|
-
| **Defined in** | #/definitions/firestore-timestamp |
|
|
166
|
+
| | |
|
|
167
|
+
| -------------- | ------------------------------------- |
|
|
168
|
+
| **Type** | `enum (of string)` |
|
|
169
|
+
| **Required** | Yes |
|
|
170
|
+
| **Defined in** | #/definitions/outbound-message-format |
|
|
164
171
|
|
|
165
|
-
**Description:** (
|
|
172
|
+
**Description:** (Immutable) Message format: `text` or `template`. Set `text` xor `template` to match.
|
|
166
173
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
| + [_nanoseconds](#sentAt__nanoseconds ) | No | integer | No | - | - |
|
|
174
|
+
Must be one of:
|
|
175
|
+
* "text"
|
|
176
|
+
* "template"
|
|
171
177
|
|
|
172
|
-
|
|
178
|
+
:::info Immutable
|
|
179
|
+
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.
|
|
180
|
+
:::
|
|
173
181
|
|
|
174
|
-
|
|
175
|
-
| ------------ | --------- |
|
|
176
|
-
| **Type** | `integer` |
|
|
177
|
-
| **Required** | Yes |
|
|
182
|
+
## <a name="text"></a>6. Property `text`
|
|
178
183
|
|
|
179
|
-
|
|
|
180
|
-
| ------------ |
|
|
181
|
-
| **
|
|
182
|
-
| **
|
|
184
|
+
| | |
|
|
185
|
+
| ------------ | ---------------- |
|
|
186
|
+
| **Type** | `string or null` |
|
|
187
|
+
| **Required** | No |
|
|
183
188
|
|
|
184
|
-
|
|
189
|
+
**Description:** Free-form message body. Present only when kind=text.
|
|
185
190
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
| **Required** | Yes |
|
|
191
|
+
:::tip When to set
|
|
192
|
+
Set only when kind === "text" — the free-form message body.
|
|
193
|
+
:::
|
|
190
194
|
|
|
191
|
-
|
|
192
|
-
| ------------ | ---------------------- |
|
|
193
|
-
| **Minimum** | ≥ -9007199254740991 |
|
|
194
|
-
| **Maximum** | ≤ 9007199254740991 |
|
|
195
|
+
## <a name="template"></a>7. Property `template`
|
|
195
196
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
197
|
+
| | |
|
|
198
|
+
| ------------ | ---------------- |
|
|
199
|
+
| **Type** | `object or null` |
|
|
200
|
+
| **Required** | No |
|
|
199
201
|
|
|
200
|
-
|
|
202
|
+
**Description:** Template send payload. Present only when kind=template.
|
|
203
|
+
|
|
204
|
+
| Property | Pattern | Type | Deprecated | Definition | Title/Description |
|
|
205
|
+
| ----------------------------------- | ------- | ------ | ---------- | ---------- | ------------------------------------------------------------------------------ |
|
|
206
|
+
| + [name](#template_name ) | No | string | No | - | WhatsApp template name (must exist and be APPROVED in whatsapp_templates). |
|
|
207
|
+
| + [language](#template_language ) | No | string | No | - | Template language/locale code (e.g. "en", "fr"). |
|
|
208
|
+
| - [variables](#template_variables ) | No | object | No | - | Template variable values, keyed by the variable name declared on the template. |
|
|
209
|
+
|
|
210
|
+
### <a name="template_name"></a>7.1. Property `name`
|
|
201
211
|
|
|
202
212
|
| | |
|
|
203
213
|
| ------------ | -------- |
|
|
204
214
|
| **Type** | `string` |
|
|
205
215
|
| **Required** | Yes |
|
|
206
216
|
|
|
207
|
-
**Description:**
|
|
217
|
+
**Description:** WhatsApp template name (must exist and be APPROVED in whatsapp_templates).
|
|
208
218
|
|
|
209
|
-
|
|
210
|
-
|
|
219
|
+
### <a name="template_language"></a>7.2. Property `language`
|
|
220
|
+
|
|
221
|
+
| | |
|
|
222
|
+
| ------------ | -------- |
|
|
223
|
+
| **Type** | `string` |
|
|
224
|
+
| **Required** | Yes |
|
|
225
|
+
|
|
226
|
+
**Description:** Template language/locale code (e.g. "en", "fr").
|
|
227
|
+
|
|
228
|
+
### <a name="template_variables"></a>7.3. Property `variables`
|
|
229
|
+
|
|
230
|
+
| | |
|
|
231
|
+
| ------------------------- | ----------------------------------------------------------------------------------------------- |
|
|
232
|
+
| **Type** | `object` |
|
|
233
|
+
| **Required** | No |
|
|
234
|
+
| **Additional properties** | [Each additional property must conform to the schema](#template_variables_additionalProperties) |
|
|
235
|
+
|
|
236
|
+
**Description:** Template variable values, keyed by the variable name declared on the template.
|
|
237
|
+
|
|
238
|
+
| Property | Pattern | Type | Deprecated | Definition | Title/Description |
|
|
239
|
+
| ----------------------------------------------- | ------- | ------ | ---------- | ---------- | ----------------- |
|
|
240
|
+
| - [](#template_variables_additionalProperties ) | No | string | No | - | - |
|
|
241
|
+
|
|
242
|
+
#### <a name="template_variables_additionalProperties"></a>7.3.1. Property `additionalProperties`
|
|
243
|
+
|
|
244
|
+
| | |
|
|
245
|
+
| ------------ | -------- |
|
|
246
|
+
| **Type** | `string` |
|
|
247
|
+
| **Required** | No |
|
|
248
|
+
|
|
249
|
+
:::tip When to set
|
|
250
|
+
Set only when kind === "template".
|
|
211
251
|
:::
|
|
212
252
|
|
|
213
|
-
## <a name="
|
|
253
|
+
## <a name="purpose"></a>8. Property `purpose`
|
|
254
|
+
|
|
255
|
+
| | |
|
|
256
|
+
| ------------------------- | ---------------- |
|
|
257
|
+
| **Type** | `combining` |
|
|
258
|
+
| **Required** | No |
|
|
259
|
+
| **Additional properties** | Any type allowed |
|
|
260
|
+
|
|
261
|
+
**Description:** Business purpose (otp | review_request | adhoc | conversational). Optional.
|
|
262
|
+
|
|
263
|
+
| Any of(Option) |
|
|
264
|
+
| --------------------------------------------- |
|
|
265
|
+
| [outbound-message-purpose](#purpose_anyOf_i0) |
|
|
266
|
+
| [item 1](#purpose_anyOf_i1) |
|
|
214
267
|
|
|
215
|
-
|
|
216
|
-
| -------------- | ----------------------------------- |
|
|
217
|
-
| **Type** | `enum (of string)` |
|
|
218
|
-
| **Required** | Yes |
|
|
219
|
-
| **Defined in** | #/definitions/outbound-message-kind |
|
|
268
|
+
### <a name="purpose_anyOf_i0"></a>8.1. Property `outbound-message-purpose`
|
|
220
269
|
|
|
221
|
-
|
|
270
|
+
| | |
|
|
271
|
+
| -------------- | -------------------------------------- |
|
|
272
|
+
| **Type** | `enum (of string)` |
|
|
273
|
+
| **Required** | No |
|
|
274
|
+
| **Defined in** | #/definitions/outbound-message-purpose |
|
|
275
|
+
|
|
276
|
+
**Description:** Business purpose of an outbound WhatsApp message — orthogonal to its format (see OutboundMessageFormat). `otp`/`review_request`/`adhoc` are system-originated; `conversational` is a human agent reply from the dashboard inbox. Optional signal carried for analytics/triggers (GH#43; supersedes the GH#38 OutboundMessageKind).
|
|
222
277
|
|
|
223
278
|
Must be one of:
|
|
224
279
|
* "otp"
|
|
225
280
|
* "review_request"
|
|
281
|
+
* "adhoc"
|
|
282
|
+
* "conversational"
|
|
283
|
+
|
|
284
|
+
### <a name="purpose_anyOf_i1"></a>8.2. Property `item 1`
|
|
285
|
+
|
|
286
|
+
| | |
|
|
287
|
+
| ------------ | ------ |
|
|
288
|
+
| **Type** | `null` |
|
|
289
|
+
| **Required** | No |
|
|
290
|
+
|
|
291
|
+
:::info Immutable
|
|
292
|
+
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.
|
|
293
|
+
:::
|
|
294
|
+
|
|
295
|
+
:::note
|
|
296
|
+
Business purpose, orthogonal to `kind`. Carried for analytics/triggers; defaults to conversational for dashboard agent replies.
|
|
297
|
+
:::
|
|
298
|
+
|
|
299
|
+
## <a name="orderUuid"></a>9. Property `orderUuid`
|
|
300
|
+
|
|
301
|
+
| | |
|
|
302
|
+
| ------------ | ---------------- |
|
|
303
|
+
| **Type** | `string or null` |
|
|
304
|
+
| **Required** | No |
|
|
305
|
+
|
|
306
|
+
**Description:** Order reference. Present on review_request messages.
|
|
226
307
|
|
|
227
308
|
:::info Immutable
|
|
228
309
|
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.
|
|
229
310
|
:::
|
|
230
311
|
|
|
231
|
-
## <a name="
|
|
312
|
+
## <a name="sentBy"></a>10. Property `sentBy`
|
|
313
|
+
|
|
314
|
+
| | |
|
|
315
|
+
| ------------------------- | ----------- |
|
|
316
|
+
| **Type** | `object` |
|
|
317
|
+
| **Required** | Yes |
|
|
318
|
+
| **Additional properties** | Not allowed |
|
|
319
|
+
|
|
320
|
+
**Description:** (Immutable) Dashboard actor who enqueued the message.
|
|
321
|
+
|
|
322
|
+
| Property | Pattern | Type | Deprecated | Definition | Title/Description |
|
|
323
|
+
| ------------------------- | ------- | ------ | ---------- | ---------- | ----------------------------------------------------------------- |
|
|
324
|
+
| + [uid](#sentBy_uid ) | No | string | No | - | Firebase Auth UID of the dashboard user who enqueued the message. |
|
|
325
|
+
| - [email](#sentBy_email ) | No | string | No | - | Email of the sender, if available. |
|
|
326
|
+
|
|
327
|
+
### <a name="sentBy_uid"></a>10.1. Property `uid`
|
|
232
328
|
|
|
233
329
|
| | |
|
|
234
330
|
| ------------ | -------- |
|
|
235
331
|
| **Type** | `string` |
|
|
236
332
|
| **Required** | Yes |
|
|
237
333
|
|
|
238
|
-
**Description:**
|
|
334
|
+
**Description:** Firebase Auth UID of the dashboard user who enqueued the message.
|
|
335
|
+
|
|
336
|
+
### <a name="sentBy_email"></a>10.2. Property `email`
|
|
337
|
+
|
|
338
|
+
| | |
|
|
339
|
+
| ------------ | -------- |
|
|
340
|
+
| **Type** | `string` |
|
|
341
|
+
| **Required** | No |
|
|
342
|
+
|
|
343
|
+
**Description:** Email of the sender, if available.
|
|
344
|
+
|
|
345
|
+
:::info Immutable
|
|
346
|
+
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.
|
|
347
|
+
:::
|
|
348
|
+
|
|
349
|
+
## <a name="createdAt"></a>11. Property `createdAt`
|
|
350
|
+
|
|
351
|
+
| | |
|
|
352
|
+
| ------------------------- | --------------------------------- |
|
|
353
|
+
| **Type** | `object` |
|
|
354
|
+
| **Required** | Yes |
|
|
355
|
+
| **Additional properties** | Not allowed |
|
|
356
|
+
| **Defined in** | #/definitions/firestore-timestamp |
|
|
357
|
+
|
|
358
|
+
**Description:** (Immutable) Enqueue timestamp, set by the dashboard at create.
|
|
359
|
+
|
|
360
|
+
| Property | Pattern | Type | Deprecated | Definition | Title/Description |
|
|
361
|
+
| ------------------------------------------ | ------- | ------- | ---------- | ---------- | ----------------- |
|
|
362
|
+
| + [_seconds](#createdAt__seconds ) | No | integer | No | - | - |
|
|
363
|
+
| + [_nanoseconds](#createdAt__nanoseconds ) | No | integer | No | - | - |
|
|
364
|
+
|
|
365
|
+
### <a name="createdAt__seconds"></a>11.1. Property `_seconds`
|
|
366
|
+
|
|
367
|
+
| | |
|
|
368
|
+
| ------------ | --------- |
|
|
369
|
+
| **Type** | `integer` |
|
|
370
|
+
| **Required** | Yes |
|
|
371
|
+
|
|
372
|
+
| Restrictions | |
|
|
373
|
+
| ------------ | ---------------------- |
|
|
374
|
+
| **Minimum** | ≥ -9007199254740991 |
|
|
375
|
+
| **Maximum** | ≤ 9007199254740991 |
|
|
376
|
+
|
|
377
|
+
### <a name="createdAt__nanoseconds"></a>11.2. Property `_nanoseconds`
|
|
378
|
+
|
|
379
|
+
| | |
|
|
380
|
+
| ------------ | --------- |
|
|
381
|
+
| **Type** | `integer` |
|
|
382
|
+
| **Required** | Yes |
|
|
383
|
+
|
|
384
|
+
| Restrictions | |
|
|
385
|
+
| ------------ | ---------------------- |
|
|
386
|
+
| **Minimum** | ≥ -9007199254740991 |
|
|
387
|
+
| **Maximum** | ≤ 9007199254740991 |
|
|
239
388
|
|
|
240
389
|
:::info Immutable
|
|
241
390
|
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
391
|
:::
|
|
243
392
|
|
|
244
|
-
## <a name="status"></a>
|
|
393
|
+
## <a name="status"></a>12. Property `status`
|
|
245
394
|
|
|
246
395
|
| | |
|
|
247
396
|
| -------------- | ------------------------------------- |
|
|
@@ -249,43 +398,83 @@ Set at creation only. This field cannot be modified after the document is create
|
|
|
249
398
|
| **Required** | Yes |
|
|
250
399
|
| **Defined in** | #/definitions/outbound-message-status |
|
|
251
400
|
|
|
252
|
-
**Description:** Delivery status.
|
|
401
|
+
**Description:** Delivery status. Created as `queued` by the dashboard; updated in place by the backend.
|
|
253
402
|
|
|
254
403
|
Must be one of:
|
|
255
|
-
* "
|
|
404
|
+
* "queued"
|
|
256
405
|
* "sent"
|
|
257
406
|
* "delivered"
|
|
258
407
|
* "read"
|
|
259
408
|
* "failed"
|
|
260
409
|
|
|
261
|
-
|
|
410
|
+
:::note
|
|
411
|
+
Dashboard must create with `queued`. The backend owns every transition after (sent → delivered → read, or failed).
|
|
412
|
+
:::
|
|
413
|
+
|
|
414
|
+
## <a name="wamid"></a>13. Property `wamid`
|
|
262
415
|
|
|
263
416
|
| | |
|
|
264
417
|
| ------------ | ---------------- |
|
|
265
418
|
| **Type** | `string or null` |
|
|
266
419
|
| **Required** | No |
|
|
267
420
|
|
|
268
|
-
**Description:**
|
|
421
|
+
**Description:** (Read-only) WhatsApp message ID returned by Meta once the backend sends. Absent while queued or on failure.
|
|
422
|
+
|
|
423
|
+
:::warning Server-set
|
|
424
|
+
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.
|
|
425
|
+
:::
|
|
269
426
|
|
|
270
|
-
## <a name="
|
|
427
|
+
## <a name="error"></a>14. Property `error`
|
|
271
428
|
|
|
272
429
|
| | |
|
|
273
430
|
| ------------ | ---------------- |
|
|
274
431
|
| **Type** | `string or null` |
|
|
275
432
|
| **Required** | No |
|
|
276
433
|
|
|
277
|
-
**Description:**
|
|
434
|
+
**Description:** (Read-only) Human-readable failure reason. Present on status=failed. Raw Meta error detail lives in the lifecycle_events subcollection.
|
|
278
435
|
|
|
279
|
-
|
|
436
|
+
:::warning Server-set
|
|
437
|
+
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.
|
|
438
|
+
:::
|
|
280
439
|
|
|
281
|
-
|
|
282
|
-
| ------------ | ---------------- |
|
|
283
|
-
| **Type** | `string or null` |
|
|
284
|
-
| **Required** | No |
|
|
440
|
+
## <a name="sentAt"></a>15. Property `sentAt`
|
|
285
441
|
|
|
286
|
-
|
|
442
|
+
| | |
|
|
443
|
+
| ------------------------- | ---------------- |
|
|
444
|
+
| **Type** | `combining` |
|
|
445
|
+
| **Required** | No |
|
|
446
|
+
| **Additional properties** | Any type allowed |
|
|
287
447
|
|
|
288
|
-
|
|
448
|
+
**Description:** (Read-only) When the backend sent the message to Meta.
|
|
449
|
+
|
|
450
|
+
| Any of(Option) |
|
|
451
|
+
| --------------------------------------- |
|
|
452
|
+
| [firestore-timestamp](#sentAt_anyOf_i0) |
|
|
453
|
+
| [item 1](#sentAt_anyOf_i1) |
|
|
454
|
+
|
|
455
|
+
### <a name="sentAt_anyOf_i0"></a>15.1. Property `firestore-timestamp`
|
|
456
|
+
|
|
457
|
+
| | |
|
|
458
|
+
| ------------------------- | ----------------------- |
|
|
459
|
+
| **Type** | `object` |
|
|
460
|
+
| **Required** | No |
|
|
461
|
+
| **Additional properties** | Not allowed |
|
|
462
|
+
| **Same definition as** | [createdAt](#createdAt) |
|
|
463
|
+
|
|
464
|
+
**Description:** Firestore Timestamp serialized representation
|
|
465
|
+
|
|
466
|
+
### <a name="sentAt_anyOf_i1"></a>15.2. Property `item 1`
|
|
467
|
+
|
|
468
|
+
| | |
|
|
469
|
+
| ------------ | ------ |
|
|
470
|
+
| **Type** | `null` |
|
|
471
|
+
| **Required** | No |
|
|
472
|
+
|
|
473
|
+
:::warning Server-set
|
|
474
|
+
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.
|
|
475
|
+
:::
|
|
476
|
+
|
|
477
|
+
## <a name="deliveredAt"></a>16. Property `deliveredAt`
|
|
289
478
|
|
|
290
479
|
| | |
|
|
291
480
|
| ------------------------- | ---------------- |
|
|
@@ -293,73 +482,108 @@ Must be one of:
|
|
|
293
482
|
| **Required** | No |
|
|
294
483
|
| **Additional properties** | Any type allowed |
|
|
295
484
|
|
|
296
|
-
**Description:**
|
|
485
|
+
**Description:** (Read-only) When Meta reported delivery.
|
|
297
486
|
|
|
298
|
-
| Any of(Option)
|
|
299
|
-
|
|
|
300
|
-
| [firestore-timestamp](#
|
|
301
|
-
| [item 1](#
|
|
487
|
+
| Any of(Option) |
|
|
488
|
+
| -------------------------------------------- |
|
|
489
|
+
| [firestore-timestamp](#deliveredAt_anyOf_i0) |
|
|
490
|
+
| [item 1](#deliveredAt_anyOf_i1) |
|
|
302
491
|
|
|
303
|
-
### <a name="
|
|
492
|
+
### <a name="deliveredAt_anyOf_i0"></a>16.1. Property `firestore-timestamp`
|
|
304
493
|
|
|
305
|
-
| |
|
|
306
|
-
| ------------------------- |
|
|
307
|
-
| **Type** | `object`
|
|
308
|
-
| **Required** | No
|
|
309
|
-
| **Additional properties** | Not allowed
|
|
310
|
-
| **Same definition as** | [
|
|
494
|
+
| | |
|
|
495
|
+
| ------------------------- | ----------------------- |
|
|
496
|
+
| **Type** | `object` |
|
|
497
|
+
| **Required** | No |
|
|
498
|
+
| **Additional properties** | Not allowed |
|
|
499
|
+
| **Same definition as** | [createdAt](#createdAt) |
|
|
311
500
|
|
|
312
501
|
**Description:** Firestore Timestamp serialized representation
|
|
313
502
|
|
|
314
|
-
### <a name="
|
|
503
|
+
### <a name="deliveredAt_anyOf_i1"></a>16.2. Property `item 1`
|
|
315
504
|
|
|
316
505
|
| | |
|
|
317
506
|
| ------------ | ------ |
|
|
318
507
|
| **Type** | `null` |
|
|
319
508
|
| **Required** | No |
|
|
320
509
|
|
|
321
|
-
|
|
510
|
+
:::warning Server-set
|
|
511
|
+
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.
|
|
512
|
+
:::
|
|
322
513
|
|
|
323
|
-
|
|
324
|
-
| ------------ | ----------------- |
|
|
325
|
-
| **Type** | `integer or null` |
|
|
326
|
-
| **Required** | No |
|
|
514
|
+
## <a name="readAt"></a>17. Property `readAt`
|
|
327
515
|
|
|
328
|
-
|
|
516
|
+
| | |
|
|
517
|
+
| ------------------------- | ---------------- |
|
|
518
|
+
| **Type** | `combining` |
|
|
519
|
+
| **Required** | No |
|
|
520
|
+
| **Additional properties** | Any type allowed |
|
|
329
521
|
|
|
330
|
-
|
|
331
|
-
| ------------ | ---------------------- |
|
|
332
|
-
| **Minimum** | ≥ -9007199254740991 |
|
|
333
|
-
| **Maximum** | ≤ 9007199254740991 |
|
|
522
|
+
**Description:** (Read-only) When Meta reported the recipient read the message.
|
|
334
523
|
|
|
335
|
-
|
|
524
|
+
| Any of(Option) |
|
|
525
|
+
| --------------------------------------- |
|
|
526
|
+
| [firestore-timestamp](#readAt_anyOf_i0) |
|
|
527
|
+
| [item 1](#readAt_anyOf_i1) |
|
|
336
528
|
|
|
337
|
-
|
|
338
|
-
| ------------ | --------------- |
|
|
339
|
-
| **Type** | `array or null` |
|
|
340
|
-
| **Required** | No |
|
|
529
|
+
### <a name="readAt_anyOf_i0"></a>17.1. Property `firestore-timestamp`
|
|
341
530
|
|
|
342
|
-
|
|
531
|
+
| | |
|
|
532
|
+
| ------------------------- | ----------------------- |
|
|
533
|
+
| **Type** | `object` |
|
|
534
|
+
| **Required** | No |
|
|
535
|
+
| **Additional properties** | Not allowed |
|
|
536
|
+
| **Same definition as** | [createdAt](#createdAt) |
|
|
343
537
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
|
349
|
-
|
|
|
350
|
-
| **
|
|
538
|
+
**Description:** Firestore Timestamp serialized representation
|
|
539
|
+
|
|
540
|
+
### <a name="readAt_anyOf_i1"></a>17.2. Property `item 1`
|
|
541
|
+
|
|
542
|
+
| | |
|
|
543
|
+
| ------------ | ------ |
|
|
544
|
+
| **Type** | `null` |
|
|
545
|
+
| **Required** | No |
|
|
351
546
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
547
|
+
:::warning Server-set
|
|
548
|
+
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.
|
|
549
|
+
:::
|
|
355
550
|
|
|
356
|
-
|
|
551
|
+
## <a name="failedAt"></a>18. Property `failedAt`
|
|
357
552
|
|
|
358
553
|
| | |
|
|
359
554
|
| ------------------------- | ---------------- |
|
|
360
|
-
| **Type** | `
|
|
555
|
+
| **Type** | `combining` |
|
|
361
556
|
| **Required** | No |
|
|
362
557
|
| **Additional properties** | Any type allowed |
|
|
363
558
|
|
|
559
|
+
**Description:** (Read-only) When the send failed.
|
|
560
|
+
|
|
561
|
+
| Any of(Option) |
|
|
562
|
+
| ----------------------------------------- |
|
|
563
|
+
| [firestore-timestamp](#failedAt_anyOf_i0) |
|
|
564
|
+
| [item 1](#failedAt_anyOf_i1) |
|
|
565
|
+
|
|
566
|
+
### <a name="failedAt_anyOf_i0"></a>18.1. Property `firestore-timestamp`
|
|
567
|
+
|
|
568
|
+
| | |
|
|
569
|
+
| ------------------------- | ----------------------- |
|
|
570
|
+
| **Type** | `object` |
|
|
571
|
+
| **Required** | No |
|
|
572
|
+
| **Additional properties** | Not allowed |
|
|
573
|
+
| **Same definition as** | [createdAt](#createdAt) |
|
|
574
|
+
|
|
575
|
+
**Description:** Firestore Timestamp serialized representation
|
|
576
|
+
|
|
577
|
+
### <a name="failedAt_anyOf_i1"></a>18.2. Property `item 1`
|
|
578
|
+
|
|
579
|
+
| | |
|
|
580
|
+
| ------------ | ------ |
|
|
581
|
+
| **Type** | `null` |
|
|
582
|
+
| **Required** | No |
|
|
583
|
+
|
|
364
584
|
----------------------------------------------------------------------------------------------------------------------------
|
|
365
|
-
Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-
|
|
585
|
+
Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-27 at 01:15:18 +0000
|
|
586
|
+
|
|
587
|
+
:::warning Server-set
|
|
588
|
+
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.
|
|
589
|
+
:::
|