@ingenx-io/valets-schema-mcp-server 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/docs/collections/firestore-paths.md +42 -8
- 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 +26 -0
- package/data/docs/enums/event-status.md +2 -2
- package/data/docs/enums/fulfillment-status.md +2 -2
- package/data/docs/enums/loyalty-transaction-type.md +2 -2
- package/data/docs/enums/order-status.md +2 -2
- 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 +24 -0
- package/data/docs/enums/stocktake-frequency.md +24 -0
- package/data/docs/enums/stocktake-item-status.md +24 -0
- package/data/docs/enums/stocktake-status.md +24 -0
- package/data/docs/enums/ticket-status.md +2 -2
- package/data/docs/index.md +14 -3
- package/data/docs/models/allowed-user.md +1 -1
- package/data/docs/models/analytics-backfill.md +398 -0
- package/data/docs/models/analytics-daily.md +351 -0
- package/data/docs/models/analytics-event.md +2 -2
- package/data/docs/models/analytics-hourly.md +372 -0
- package/data/docs/models/booking-version.md +2 -2
- package/data/docs/models/booking.md +2 -2
- package/data/docs/models/customer-payment-allocation.md +2 -2
- package/data/docs/models/customer-payment.md +2 -2
- package/data/docs/models/customer.md +2 -2
- package/data/docs/models/event.md +2 -2
- package/data/docs/models/loyalty-config.md +2 -2
- package/data/docs/models/loyalty-reward.md +2 -2
- package/data/docs/models/loyalty-status.md +2 -2
- package/data/docs/models/loyalty-transaction.md +2 -2
- package/data/docs/models/magic-link-request.md +2 -2
- package/data/docs/models/metrics-current.md +2 -2
- package/data/docs/models/metrics-daily.md +2 -2
- package/data/docs/models/metrics-monthly.md +2 -2
- package/data/docs/models/order-item.md +2 -2
- package/data/docs/models/order.md +248 -220
- package/data/docs/models/sale.md +2 -2
- package/data/docs/models/site-payment.md +2 -2
- package/data/docs/models/site.md +561 -0
- package/data/docs/models/stocktake-item.md +500 -0
- package/data/docs/models/stocktake.md +649 -0
- package/data/docs/models/ticket.md +2 -2
- package/data/static/llms.txt +309 -2
- package/data/static/openapi.yaml +972 -0
- package/data/static/schemas.json +1249 -77
- package/package.json +1 -1
package/data/docs/models/sale.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Sale"
|
|
3
3
|
sidebar_label: "Sale"
|
|
4
|
-
sidebar_position:
|
|
4
|
+
sidebar_position: 22
|
|
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-
|
|
527
|
+
Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-05 at 12:09:28 +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:
|
|
4
|
+
sidebar_position: 24
|
|
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** | ≤ 9007199254740991 |
|
|
198
198
|
|
|
199
199
|
----------------------------------------------------------------------------------------------------------------------------
|
|
200
|
-
Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-
|
|
200
|
+
Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-05 at 12:09:28 +0000
|
|
@@ -0,0 +1,561 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Site"
|
|
3
|
+
sidebar_label: "Site"
|
|
4
|
+
sidebar_position: 23
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Site
|
|
8
|
+
|
|
9
|
+
<details>
|
|
10
|
+
<summary>Example JSON</summary>
|
|
11
|
+
|
|
12
|
+
```json
|
|
13
|
+
{
|
|
14
|
+
"id": null,
|
|
15
|
+
"companyId": "comp_xyz789",
|
|
16
|
+
"name": "Amadou Diallo",
|
|
17
|
+
"description": null,
|
|
18
|
+
"status": "status",
|
|
19
|
+
"deploymentLinks": [
|
|
20
|
+
{
|
|
21
|
+
"label": "label",
|
|
22
|
+
"url": "https://storage.example.com/url.jpg",
|
|
23
|
+
"type": "phone"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"expiresAt": "expiresAt",
|
|
27
|
+
"isExpired": null,
|
|
28
|
+
"createdAt": "createdAt",
|
|
29
|
+
"updatedAt": "updatedAt",
|
|
30
|
+
"createdBy": "staff_k0f1",
|
|
31
|
+
"analyticsEnabled": true,
|
|
32
|
+
"lastAnalyticsSync": "lastAnalyticsSync",
|
|
33
|
+
"cachedMetrics": null
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
</details>
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
- [1. Property `id`](#id)
|
|
41
|
+
- [2. Property `companyId`](#companyId)
|
|
42
|
+
- [3. Property `name`](#name)
|
|
43
|
+
- [4. Property `description`](#description)
|
|
44
|
+
- [5. Property `status`](#status)
|
|
45
|
+
- [6. Property `deploymentLinks`](#deploymentLinks)
|
|
46
|
+
- [6.1. deploymentLinks items](#deploymentLinks_items)
|
|
47
|
+
- [6.1.1. Property `label`](#deploymentLinks_items_label)
|
|
48
|
+
- [6.1.2. Property `url`](#deploymentLinks_items_url)
|
|
49
|
+
- [6.1.3. Property `type`](#deploymentLinks_items_type)
|
|
50
|
+
- [6.1.4. Property `isPrimary`](#deploymentLinks_items_isPrimary)
|
|
51
|
+
- [7. Property `expiresAt`](#expiresAt)
|
|
52
|
+
- [7.1. Property `firestore-timestamp`](#expiresAt_anyOf_i0)
|
|
53
|
+
- [7.1.1. Property `_seconds`](#expiresAt_anyOf_i0__seconds)
|
|
54
|
+
- [7.1.2. Property `_nanoseconds`](#expiresAt_anyOf_i0__nanoseconds)
|
|
55
|
+
- [7.2. Property `item 1`](#expiresAt_anyOf_i1)
|
|
56
|
+
- [8. Property `isExpired`](#isExpired)
|
|
57
|
+
- [9. Property `createdAt`](#createdAt)
|
|
58
|
+
- [9.1. Property `firestore-timestamp`](#createdAt_anyOf_i0)
|
|
59
|
+
- [9.2. Property `item 1`](#createdAt_anyOf_i1)
|
|
60
|
+
- [10. Property `updatedAt`](#updatedAt)
|
|
61
|
+
- [10.1. Property `firestore-timestamp`](#updatedAt_anyOf_i0)
|
|
62
|
+
- [10.2. Property `item 1`](#updatedAt_anyOf_i1)
|
|
63
|
+
- [11. Property `createdBy`](#createdBy)
|
|
64
|
+
- [12. Property `analyticsEnabled`](#analyticsEnabled)
|
|
65
|
+
- [13. Property `lastAnalyticsSync`](#lastAnalyticsSync)
|
|
66
|
+
- [13.1. Property `firestore-timestamp`](#lastAnalyticsSync_anyOf_i0)
|
|
67
|
+
- [13.2. Property `item 1`](#lastAnalyticsSync_anyOf_i1)
|
|
68
|
+
- [14. Property `cachedMetrics`](#cachedMetrics)
|
|
69
|
+
- [14.1. Property `totalEvents`](#cachedMetrics_totalEvents)
|
|
70
|
+
- [14.2. Property `totalPageViews`](#cachedMetrics_totalPageViews)
|
|
71
|
+
- [14.3. Property `totalSessions`](#cachedMetrics_totalSessions)
|
|
72
|
+
- [14.4. Property `totalOrders`](#cachedMetrics_totalOrders)
|
|
73
|
+
- [14.5. Property `lastEventAt`](#cachedMetrics_lastEventAt)
|
|
74
|
+
|
|
75
|
+
| | |
|
|
76
|
+
| ------------------------- | ------------------ |
|
|
77
|
+
| **Type** | `object` |
|
|
78
|
+
| **Required** | No |
|
|
79
|
+
| **Additional properties** | Not allowed |
|
|
80
|
+
| **Defined in** | #/definitions/site |
|
|
81
|
+
|
|
82
|
+
**Description:** Site model (D41 / ING-304). Collection: companies/\{companyId\}/sites/\{siteId\}. Per-company product surface. Sub-collections (magic_link_requests, allowed_users, payments, analytics_events, analytics_daily, analytics_hourly, analytics_backfills) live under this document per D40/D42.
|
|
83
|
+
|
|
84
|
+
| Property | Pattern | Type | Deprecated | Definition | Title/Description |
|
|
85
|
+
| ------------------------------------------ | ------- | ---------------- | ---------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------- |
|
|
86
|
+
| - [id](#id ) | No | string or null | No | - | (Read-only) Firestore document ID, auto-generated. |
|
|
87
|
+
| + [companyId](#companyId ) | No | string | No | - | (Immutable) FK → Company document ID. Scopes all site sub-collections. |
|
|
88
|
+
| + [name](#name ) | No | string | No | - | Human-readable site name shown in dashboards. |
|
|
89
|
+
| - [description](#description ) | No | string or null | No | - | Optional freeform description. |
|
|
90
|
+
| + [status](#status ) | No | enum (of string) | No | In #/definitions/site-status | Lifecycle status (D41). Clients filter by ACTIVE. |
|
|
91
|
+
| + [deploymentLinks](#deploymentLinks ) | No | array of object | No | - | Ordered list of deployment URLs (web, mobile, PWA, store links). |
|
|
92
|
+
| - [expiresAt](#expiresAt ) | No | Combination | No | - | Optional expiration timestamp. When set and elapsed, \`isExpired\` flips true and status typically moves to EXPIRED. |
|
|
93
|
+
| - [isExpired](#isExpired ) | No | boolean or null | No | - | (Read-only) Derived — true when \`expiresAt\` is in the past. Maintained by server trigger. |
|
|
94
|
+
| - [createdAt](#createdAt ) | No | Combination | No | - | (Read-only) Server-generated creation timestamp. |
|
|
95
|
+
| - [updatedAt](#updatedAt ) | No | Combination | No | - | (Read-only) Server-generated update timestamp. |
|
|
96
|
+
| + [createdBy](#createdBy ) | No | string | No | - | (Immutable) FK → User/staff UID who created the site. |
|
|
97
|
+
| + [analyticsEnabled](#analyticsEnabled ) | No | boolean | No | - | Feature flag — when false, clients should not emit analytics events for this site. |
|
|
98
|
+
| - [lastAnalyticsSync](#lastAnalyticsSync ) | No | Combination | No | - | (Read-only) Last time the analytics rollup pipeline refreshed \`cachedMetrics\`. |
|
|
99
|
+
| - [cachedMetrics](#cachedMetrics ) | No | object or null | No | - | (Read-only, Denormalized) Cached metrics snapshot for quick dashboard rendering. |
|
|
100
|
+
|
|
101
|
+
## <a name="id"></a>1. Property `id`
|
|
102
|
+
|
|
103
|
+
| | |
|
|
104
|
+
| ------------ | ---------------- |
|
|
105
|
+
| **Type** | `string or null` |
|
|
106
|
+
| **Required** | No |
|
|
107
|
+
|
|
108
|
+
**Description:** (Read-only) Firestore document ID, auto-generated.
|
|
109
|
+
|
|
110
|
+
:::warning Server-set
|
|
111
|
+
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.
|
|
112
|
+
:::
|
|
113
|
+
|
|
114
|
+
## <a name="companyId"></a>2. Property `companyId`
|
|
115
|
+
|
|
116
|
+
| | |
|
|
117
|
+
| ------------ | -------- |
|
|
118
|
+
| **Type** | `string` |
|
|
119
|
+
| **Required** | Yes |
|
|
120
|
+
|
|
121
|
+
**Description:** (Immutable) FK → Company document ID. Scopes all site sub-collections.
|
|
122
|
+
|
|
123
|
+
:::info Immutable
|
|
124
|
+
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.
|
|
125
|
+
:::
|
|
126
|
+
|
|
127
|
+
## <a name="name"></a>3. Property `name`
|
|
128
|
+
|
|
129
|
+
| | |
|
|
130
|
+
| ------------ | -------- |
|
|
131
|
+
| **Type** | `string` |
|
|
132
|
+
| **Required** | Yes |
|
|
133
|
+
|
|
134
|
+
**Description:** Human-readable site name shown in dashboards.
|
|
135
|
+
|
|
136
|
+
## <a name="description"></a>4. Property `description`
|
|
137
|
+
|
|
138
|
+
| | |
|
|
139
|
+
| ------------ | ---------------- |
|
|
140
|
+
| **Type** | `string or null` |
|
|
141
|
+
| **Required** | No |
|
|
142
|
+
|
|
143
|
+
**Description:** Optional freeform description.
|
|
144
|
+
|
|
145
|
+
## <a name="status"></a>5. Property `status`
|
|
146
|
+
|
|
147
|
+
| | |
|
|
148
|
+
| -------------- | ------------------------- |
|
|
149
|
+
| **Type** | `enum (of string)` |
|
|
150
|
+
| **Required** | Yes |
|
|
151
|
+
| **Defined in** | #/definitions/site-status |
|
|
152
|
+
|
|
153
|
+
**Description:** Lifecycle status (D41). Clients filter by ACTIVE.
|
|
154
|
+
|
|
155
|
+
Must be one of:
|
|
156
|
+
* "ACTIVE"
|
|
157
|
+
* "INACTIVE"
|
|
158
|
+
* "EXPIRED"
|
|
159
|
+
* "ARCHIVED"
|
|
160
|
+
|
|
161
|
+
:::note
|
|
162
|
+
ACTIVE = live and serving traffic. INACTIVE = intentionally disabled by operators. EXPIRED = past expiresAt (derived when isExpired is true; may also be stored explicitly). ARCHIVED = soft-deleted; retained for audit but not listed by default.
|
|
163
|
+
:::
|
|
164
|
+
|
|
165
|
+
:::tip When to set
|
|
166
|
+
Written by operators via dashboard or by server triggers (expiration). Clients filter by ACTIVE.
|
|
167
|
+
:::
|
|
168
|
+
|
|
169
|
+
:::info See also
|
|
170
|
+
**Decisions:** `D41`
|
|
171
|
+
:::
|
|
172
|
+
|
|
173
|
+
## <a name="deploymentLinks"></a>6. Property `deploymentLinks`
|
|
174
|
+
|
|
175
|
+
| | |
|
|
176
|
+
| ------------ | ----------------- |
|
|
177
|
+
| **Type** | `array of object` |
|
|
178
|
+
| **Required** | Yes |
|
|
179
|
+
|
|
180
|
+
**Description:** Ordered list of deployment URLs (web, mobile, PWA, store links).
|
|
181
|
+
|
|
182
|
+
| | Array restrictions |
|
|
183
|
+
| -------------------- | ------------------ |
|
|
184
|
+
| **Min items** | N/A |
|
|
185
|
+
| **Max items** | N/A |
|
|
186
|
+
| **Items unicity** | False |
|
|
187
|
+
| **Additional items** | False |
|
|
188
|
+
| **Tuple validation** | See below |
|
|
189
|
+
|
|
190
|
+
| Each item of this array must be | Description |
|
|
191
|
+
| ----------------------------------------------- | --------------------------------------------------------------- |
|
|
192
|
+
| [deploymentLinks items](#deploymentLinks_items) | Deployment link entry embedded on Site.deploymentLinks[] (D41). |
|
|
193
|
+
|
|
194
|
+
### <a name="deploymentLinks_items"></a>6.1. deploymentLinks items
|
|
195
|
+
|
|
196
|
+
| | |
|
|
197
|
+
| ------------------------- | ----------- |
|
|
198
|
+
| **Type** | `object` |
|
|
199
|
+
| **Required** | No |
|
|
200
|
+
| **Additional properties** | Not allowed |
|
|
201
|
+
|
|
202
|
+
**Description:** Deployment link entry embedded on Site.deploymentLinks[] (D41).
|
|
203
|
+
|
|
204
|
+
| Property | Pattern | Type | Deprecated | Definition | Title/Description |
|
|
205
|
+
| ------------------------------------------------ | ------- | ---------------- | ---------- | ------------------------------------- | ------------------------------------------------------------------------ |
|
|
206
|
+
| + [label](#deploymentLinks_items_label ) | No | string | No | - | Human-readable label shown in dashboards (e.g. "Production", "Staging"). |
|
|
207
|
+
| + [url](#deploymentLinks_items_url ) | No | string | No | - | Absolute URL or store link. |
|
|
208
|
+
| + [type](#deploymentLinks_items_type ) | No | enum (of string) | No | In #/definitions/deployment-link-type | Link category — drives icon/handler selection. |
|
|
209
|
+
| - [isPrimary](#deploymentLinks_items_isPrimary ) | No | boolean | No | - | If true, this link is used as the canonical deployment URL for the Site. |
|
|
210
|
+
|
|
211
|
+
#### <a name="deploymentLinks_items_label"></a>6.1.1. Property `label`
|
|
212
|
+
|
|
213
|
+
| | |
|
|
214
|
+
| ------------ | -------- |
|
|
215
|
+
| **Type** | `string` |
|
|
216
|
+
| **Required** | Yes |
|
|
217
|
+
|
|
218
|
+
**Description:** Human-readable label shown in dashboards (e.g. "Production", "Staging").
|
|
219
|
+
|
|
220
|
+
#### <a name="deploymentLinks_items_url"></a>6.1.2. Property `url`
|
|
221
|
+
|
|
222
|
+
| | |
|
|
223
|
+
| ------------ | -------- |
|
|
224
|
+
| **Type** | `string` |
|
|
225
|
+
| **Required** | Yes |
|
|
226
|
+
|
|
227
|
+
**Description:** Absolute URL or store link.
|
|
228
|
+
|
|
229
|
+
#### <a name="deploymentLinks_items_type"></a>6.1.3. Property `type`
|
|
230
|
+
|
|
231
|
+
| | |
|
|
232
|
+
| -------------- | ---------------------------------- |
|
|
233
|
+
| **Type** | `enum (of string)` |
|
|
234
|
+
| **Required** | Yes |
|
|
235
|
+
| **Defined in** | #/definitions/deployment-link-type |
|
|
236
|
+
|
|
237
|
+
**Description:** Link category — drives icon/handler selection.
|
|
238
|
+
|
|
239
|
+
Must be one of:
|
|
240
|
+
* "web"
|
|
241
|
+
* "mobile"
|
|
242
|
+
* "pwa"
|
|
243
|
+
* "app-store"
|
|
244
|
+
* "play-store"
|
|
245
|
+
* "other"
|
|
246
|
+
|
|
247
|
+
#### <a name="deploymentLinks_items_isPrimary"></a>6.1.4. Property `isPrimary`
|
|
248
|
+
|
|
249
|
+
| | |
|
|
250
|
+
| ------------ | --------- |
|
|
251
|
+
| **Type** | `boolean` |
|
|
252
|
+
| **Required** | No |
|
|
253
|
+
|
|
254
|
+
**Description:** If true, this link is used as the canonical deployment URL for the Site.
|
|
255
|
+
|
|
256
|
+
## <a name="expiresAt"></a>7. Property `expiresAt`
|
|
257
|
+
|
|
258
|
+
| | |
|
|
259
|
+
| ------------------------- | ---------------- |
|
|
260
|
+
| **Type** | `combining` |
|
|
261
|
+
| **Required** | No |
|
|
262
|
+
| **Additional properties** | Any type allowed |
|
|
263
|
+
|
|
264
|
+
**Description:** Optional expiration timestamp. When set and elapsed, `isExpired` flips true and status typically moves to EXPIRED.
|
|
265
|
+
|
|
266
|
+
| Any of(Option) |
|
|
267
|
+
| ------------------------------------------ |
|
|
268
|
+
| [firestore-timestamp](#expiresAt_anyOf_i0) |
|
|
269
|
+
| [item 1](#expiresAt_anyOf_i1) |
|
|
270
|
+
|
|
271
|
+
### <a name="expiresAt_anyOf_i0"></a>7.1. Property `firestore-timestamp`
|
|
272
|
+
|
|
273
|
+
| | |
|
|
274
|
+
| ------------------------- | --------------------------------- |
|
|
275
|
+
| **Type** | `object` |
|
|
276
|
+
| **Required** | No |
|
|
277
|
+
| **Additional properties** | Not allowed |
|
|
278
|
+
| **Defined in** | #/definitions/firestore-timestamp |
|
|
279
|
+
|
|
280
|
+
**Description:** Firestore Timestamp serialized representation
|
|
281
|
+
|
|
282
|
+
| Property | Pattern | Type | Deprecated | Definition | Title/Description |
|
|
283
|
+
| --------------------------------------------------- | ------- | ------- | ---------- | ---------- | ----------------- |
|
|
284
|
+
| + [_seconds](#expiresAt_anyOf_i0__seconds ) | No | integer | No | - | - |
|
|
285
|
+
| + [_nanoseconds](#expiresAt_anyOf_i0__nanoseconds ) | No | integer | No | - | - |
|
|
286
|
+
|
|
287
|
+
#### <a name="expiresAt_anyOf_i0__seconds"></a>7.1.1. Property `_seconds`
|
|
288
|
+
|
|
289
|
+
| | |
|
|
290
|
+
| ------------ | --------- |
|
|
291
|
+
| **Type** | `integer` |
|
|
292
|
+
| **Required** | Yes |
|
|
293
|
+
|
|
294
|
+
| Restrictions | |
|
|
295
|
+
| ------------ | ---------------------- |
|
|
296
|
+
| **Minimum** | ≥ -9007199254740991 |
|
|
297
|
+
| **Maximum** | ≤ 9007199254740991 |
|
|
298
|
+
|
|
299
|
+
#### <a name="expiresAt_anyOf_i0__nanoseconds"></a>7.1.2. Property `_nanoseconds`
|
|
300
|
+
|
|
301
|
+
| | |
|
|
302
|
+
| ------------ | --------- |
|
|
303
|
+
| **Type** | `integer` |
|
|
304
|
+
| **Required** | Yes |
|
|
305
|
+
|
|
306
|
+
| Restrictions | |
|
|
307
|
+
| ------------ | ---------------------- |
|
|
308
|
+
| **Minimum** | ≥ -9007199254740991 |
|
|
309
|
+
| **Maximum** | ≤ 9007199254740991 |
|
|
310
|
+
|
|
311
|
+
### <a name="expiresAt_anyOf_i1"></a>7.2. Property `item 1`
|
|
312
|
+
|
|
313
|
+
| | |
|
|
314
|
+
| ------------ | ------ |
|
|
315
|
+
| **Type** | `null` |
|
|
316
|
+
| **Required** | No |
|
|
317
|
+
|
|
318
|
+
## <a name="isExpired"></a>8. Property `isExpired`
|
|
319
|
+
|
|
320
|
+
| | |
|
|
321
|
+
| ------------ | ----------------- |
|
|
322
|
+
| **Type** | `boolean or null` |
|
|
323
|
+
| **Required** | No |
|
|
324
|
+
|
|
325
|
+
**Description:** (Read-only) Derived — true when `expiresAt` is in the past. Maintained by server trigger.
|
|
326
|
+
|
|
327
|
+
:::warning Server-set
|
|
328
|
+
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.
|
|
329
|
+
:::
|
|
330
|
+
|
|
331
|
+
## <a name="createdAt"></a>9. Property `createdAt`
|
|
332
|
+
|
|
333
|
+
| | |
|
|
334
|
+
| ------------------------- | ---------------- |
|
|
335
|
+
| **Type** | `combining` |
|
|
336
|
+
| **Required** | No |
|
|
337
|
+
| **Additional properties** | Any type allowed |
|
|
338
|
+
|
|
339
|
+
**Description:** (Read-only) Server-generated creation timestamp.
|
|
340
|
+
|
|
341
|
+
| Any of(Option) |
|
|
342
|
+
| ------------------------------------------ |
|
|
343
|
+
| [firestore-timestamp](#createdAt_anyOf_i0) |
|
|
344
|
+
| [item 1](#createdAt_anyOf_i1) |
|
|
345
|
+
|
|
346
|
+
### <a name="createdAt_anyOf_i0"></a>9.1. Property `firestore-timestamp`
|
|
347
|
+
|
|
348
|
+
| | |
|
|
349
|
+
| ------------------------- | ----------------------------------------- |
|
|
350
|
+
| **Type** | `object` |
|
|
351
|
+
| **Required** | No |
|
|
352
|
+
| **Additional properties** | Not allowed |
|
|
353
|
+
| **Same definition as** | [expiresAt_anyOf_i0](#expiresAt_anyOf_i0) |
|
|
354
|
+
|
|
355
|
+
**Description:** Firestore Timestamp serialized representation
|
|
356
|
+
|
|
357
|
+
### <a name="createdAt_anyOf_i1"></a>9.2. Property `item 1`
|
|
358
|
+
|
|
359
|
+
| | |
|
|
360
|
+
| ------------ | ------ |
|
|
361
|
+
| **Type** | `null` |
|
|
362
|
+
| **Required** | No |
|
|
363
|
+
|
|
364
|
+
:::warning Server-set
|
|
365
|
+
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.
|
|
366
|
+
:::
|
|
367
|
+
|
|
368
|
+
## <a name="updatedAt"></a>10. Property `updatedAt`
|
|
369
|
+
|
|
370
|
+
| | |
|
|
371
|
+
| ------------------------- | ---------------- |
|
|
372
|
+
| **Type** | `combining` |
|
|
373
|
+
| **Required** | No |
|
|
374
|
+
| **Additional properties** | Any type allowed |
|
|
375
|
+
|
|
376
|
+
**Description:** (Read-only) Server-generated update timestamp.
|
|
377
|
+
|
|
378
|
+
| Any of(Option) |
|
|
379
|
+
| ------------------------------------------ |
|
|
380
|
+
| [firestore-timestamp](#updatedAt_anyOf_i0) |
|
|
381
|
+
| [item 1](#updatedAt_anyOf_i1) |
|
|
382
|
+
|
|
383
|
+
### <a name="updatedAt_anyOf_i0"></a>10.1. Property `firestore-timestamp`
|
|
384
|
+
|
|
385
|
+
| | |
|
|
386
|
+
| ------------------------- | ----------------------------------------- |
|
|
387
|
+
| **Type** | `object` |
|
|
388
|
+
| **Required** | No |
|
|
389
|
+
| **Additional properties** | Not allowed |
|
|
390
|
+
| **Same definition as** | [expiresAt_anyOf_i0](#expiresAt_anyOf_i0) |
|
|
391
|
+
|
|
392
|
+
**Description:** Firestore Timestamp serialized representation
|
|
393
|
+
|
|
394
|
+
### <a name="updatedAt_anyOf_i1"></a>10.2. Property `item 1`
|
|
395
|
+
|
|
396
|
+
| | |
|
|
397
|
+
| ------------ | ------ |
|
|
398
|
+
| **Type** | `null` |
|
|
399
|
+
| **Required** | No |
|
|
400
|
+
|
|
401
|
+
:::warning Server-set
|
|
402
|
+
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.
|
|
403
|
+
:::
|
|
404
|
+
|
|
405
|
+
## <a name="createdBy"></a>11. Property `createdBy`
|
|
406
|
+
|
|
407
|
+
| | |
|
|
408
|
+
| ------------ | -------- |
|
|
409
|
+
| **Type** | `string` |
|
|
410
|
+
| **Required** | Yes |
|
|
411
|
+
|
|
412
|
+
**Description:** (Immutable) FK → User/staff UID who created the site.
|
|
413
|
+
|
|
414
|
+
:::info Immutable
|
|
415
|
+
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.
|
|
416
|
+
:::
|
|
417
|
+
|
|
418
|
+
## <a name="analyticsEnabled"></a>12. Property `analyticsEnabled`
|
|
419
|
+
|
|
420
|
+
| | |
|
|
421
|
+
| ------------ | --------- |
|
|
422
|
+
| **Type** | `boolean` |
|
|
423
|
+
| **Required** | Yes |
|
|
424
|
+
|
|
425
|
+
**Description:** Feature flag — when false, clients should not emit analytics events for this site.
|
|
426
|
+
|
|
427
|
+
## <a name="lastAnalyticsSync"></a>13. Property `lastAnalyticsSync`
|
|
428
|
+
|
|
429
|
+
| | |
|
|
430
|
+
| ------------------------- | ---------------- |
|
|
431
|
+
| **Type** | `combining` |
|
|
432
|
+
| **Required** | No |
|
|
433
|
+
| **Additional properties** | Any type allowed |
|
|
434
|
+
|
|
435
|
+
**Description:** (Read-only) Last time the analytics rollup pipeline refreshed `cachedMetrics`.
|
|
436
|
+
|
|
437
|
+
| Any of(Option) |
|
|
438
|
+
| -------------------------------------------------- |
|
|
439
|
+
| [firestore-timestamp](#lastAnalyticsSync_anyOf_i0) |
|
|
440
|
+
| [item 1](#lastAnalyticsSync_anyOf_i1) |
|
|
441
|
+
|
|
442
|
+
### <a name="lastAnalyticsSync_anyOf_i0"></a>13.1. Property `firestore-timestamp`
|
|
443
|
+
|
|
444
|
+
| | |
|
|
445
|
+
| ------------------------- | ----------------------------------------- |
|
|
446
|
+
| **Type** | `object` |
|
|
447
|
+
| **Required** | No |
|
|
448
|
+
| **Additional properties** | Not allowed |
|
|
449
|
+
| **Same definition as** | [expiresAt_anyOf_i0](#expiresAt_anyOf_i0) |
|
|
450
|
+
|
|
451
|
+
**Description:** Firestore Timestamp serialized representation
|
|
452
|
+
|
|
453
|
+
### <a name="lastAnalyticsSync_anyOf_i1"></a>13.2. Property `item 1`
|
|
454
|
+
|
|
455
|
+
| | |
|
|
456
|
+
| ------------ | ------ |
|
|
457
|
+
| **Type** | `null` |
|
|
458
|
+
| **Required** | No |
|
|
459
|
+
|
|
460
|
+
:::warning Server-set
|
|
461
|
+
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.
|
|
462
|
+
:::
|
|
463
|
+
|
|
464
|
+
## <a name="cachedMetrics"></a>14. Property `cachedMetrics`
|
|
465
|
+
|
|
466
|
+
| | |
|
|
467
|
+
| ------------ | ---------------- |
|
|
468
|
+
| **Type** | `object or null` |
|
|
469
|
+
| **Required** | No |
|
|
470
|
+
|
|
471
|
+
**Description:** (Read-only, Denormalized) Cached metrics snapshot for quick dashboard rendering.
|
|
472
|
+
|
|
473
|
+
| Property | Pattern | Type | Deprecated | Definition | Title/Description |
|
|
474
|
+
| -------------------------------------------------- | ------- | ------- | ---------- | -------------------------------------------------- | ------------------------------------------------------------------------- |
|
|
475
|
+
| + [totalEvents](#cachedMetrics_totalEvents ) | No | integer | No | - | All-time event count cached on the Site. |
|
|
476
|
+
| + [totalPageViews](#cachedMetrics_totalPageViews ) | No | integer | No | - | All-time \`page_view\` + \`screen_view\` count. |
|
|
477
|
+
| + [totalSessions](#cachedMetrics_totalSessions ) | No | integer | No | - | All-time distinct session count. |
|
|
478
|
+
| + [totalOrders](#cachedMetrics_totalOrders ) | No | integer | No | - | All-time order count attributed to this site (via \`Order.siteId\`, D43). |
|
|
479
|
+
| - [lastEventAt](#cachedMetrics_lastEventAt ) | No | object | No | Same as [expiresAt_anyOf_i0](#expiresAt_anyOf_i0 ) | Timestamp of the most recent analytics event seen for this site. |
|
|
480
|
+
|
|
481
|
+
### <a name="cachedMetrics_totalEvents"></a>14.1. Property `totalEvents`
|
|
482
|
+
|
|
483
|
+
| | |
|
|
484
|
+
| ------------ | --------- |
|
|
485
|
+
| **Type** | `integer` |
|
|
486
|
+
| **Required** | Yes |
|
|
487
|
+
|
|
488
|
+
**Description:** All-time event count cached on the Site.
|
|
489
|
+
|
|
490
|
+
| Restrictions | |
|
|
491
|
+
| ------------ | ---------------------- |
|
|
492
|
+
| **Minimum** | ≥ -9007199254740991 |
|
|
493
|
+
| **Maximum** | ≤ 9007199254740991 |
|
|
494
|
+
|
|
495
|
+
### <a name="cachedMetrics_totalPageViews"></a>14.2. Property `totalPageViews`
|
|
496
|
+
|
|
497
|
+
| | |
|
|
498
|
+
| ------------ | --------- |
|
|
499
|
+
| **Type** | `integer` |
|
|
500
|
+
| **Required** | Yes |
|
|
501
|
+
|
|
502
|
+
**Description:** All-time `page_view` + `screen_view` count.
|
|
503
|
+
|
|
504
|
+
| Restrictions | |
|
|
505
|
+
| ------------ | ---------------------- |
|
|
506
|
+
| **Minimum** | ≥ -9007199254740991 |
|
|
507
|
+
| **Maximum** | ≤ 9007199254740991 |
|
|
508
|
+
|
|
509
|
+
### <a name="cachedMetrics_totalSessions"></a>14.3. Property `totalSessions`
|
|
510
|
+
|
|
511
|
+
| | |
|
|
512
|
+
| ------------ | --------- |
|
|
513
|
+
| **Type** | `integer` |
|
|
514
|
+
| **Required** | Yes |
|
|
515
|
+
|
|
516
|
+
**Description:** All-time distinct session count.
|
|
517
|
+
|
|
518
|
+
| Restrictions | |
|
|
519
|
+
| ------------ | ---------------------- |
|
|
520
|
+
| **Minimum** | ≥ -9007199254740991 |
|
|
521
|
+
| **Maximum** | ≤ 9007199254740991 |
|
|
522
|
+
|
|
523
|
+
### <a name="cachedMetrics_totalOrders"></a>14.4. Property `totalOrders`
|
|
524
|
+
|
|
525
|
+
| | |
|
|
526
|
+
| ------------ | --------- |
|
|
527
|
+
| **Type** | `integer` |
|
|
528
|
+
| **Required** | Yes |
|
|
529
|
+
|
|
530
|
+
**Description:** All-time order count attributed to this site (via `Order.siteId`, D43).
|
|
531
|
+
|
|
532
|
+
| Restrictions | |
|
|
533
|
+
| ------------ | ---------------------- |
|
|
534
|
+
| **Minimum** | ≥ -9007199254740991 |
|
|
535
|
+
| **Maximum** | ≤ 9007199254740991 |
|
|
536
|
+
|
|
537
|
+
### <a name="cachedMetrics_lastEventAt"></a>14.5. Property `lastEventAt`
|
|
538
|
+
|
|
539
|
+
| | |
|
|
540
|
+
| ------------------------- | ----------------------------------------- |
|
|
541
|
+
| **Type** | `object` |
|
|
542
|
+
| **Required** | No |
|
|
543
|
+
| **Additional properties** | Not allowed |
|
|
544
|
+
| **Same definition as** | [expiresAt_anyOf_i0](#expiresAt_anyOf_i0) |
|
|
545
|
+
|
|
546
|
+
**Description:** Timestamp of the most recent analytics event seen for this site.
|
|
547
|
+
|
|
548
|
+
----------------------------------------------------------------------------------------------------------------------------
|
|
549
|
+
Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-05-05 at 12:09:28 +0000
|
|
550
|
+
|
|
551
|
+
:::warning Server-set
|
|
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.
|
|
553
|
+
:::
|
|
554
|
+
|
|
555
|
+
:::note
|
|
556
|
+
Updated by the rollup pipeline (D42). Readers should treat this as a hint; authoritative counts live in analytics_daily/analytics_hourly.
|
|
557
|
+
:::
|
|
558
|
+
|
|
559
|
+
:::info See also
|
|
560
|
+
**Decisions:** `D41` · `D42`
|
|
561
|
+
:::
|