order3000 1.5.0 → 1.6.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/dist/client.mjs CHANGED
@@ -236,6 +236,21 @@ class AdsResource extends BaseResource {
236
236
  body
237
237
  );
238
238
  }
239
+ /**
240
+ * Write paste-ready Meta (Facebook/Instagram) ad copy + creative onto the
241
+ * ad's `metaContent` document — the Meta analog of {@link patch} (which writes
242
+ * Google `content`). Pass `metaContent` (primary text / headline / description
243
+ * keyed by locale, `finalUrl`, `callToAction`, the per-placement `creatives`
244
+ * map) and/or `status`; Google `content` is left untouched. Returns the
245
+ * resulting ad.
246
+ */
247
+ async editMeta(adId, body) {
248
+ return this.request(
249
+ "PATCH",
250
+ `/${encodeURIComponent(adId)}/meta`,
251
+ body
252
+ );
253
+ }
239
254
  /**
240
255
  * Permanently delete an ad by id. Returns the deleted ad row.
241
256
  */
@@ -522,7 +537,7 @@ class EventsResource extends BaseResource {
522
537
  /**
523
538
  * List all events for the venue
524
539
  * @param options - Optional filters for the list request
525
- * @returns Array of events with schedule, posters, and promotions
540
+ * @returns Array of events with schedule, assets, and promotions
526
541
  */
527
542
  async list(options) {
528
543
  const queryParams = new URLSearchParams();
@@ -561,7 +576,7 @@ class EventsResource extends BaseResource {
561
576
  * parts. The server resolves either form transparently.
562
577
  * @param idOrAccessor - The event UUID or accessor (e.g., 'lunch-menu')
563
578
  * @param options - Optional expand options
564
- * @returns The event with optional schedule, timeSlots, menus, and posters
579
+ * @returns The event with optional schedule, timeSlots, menus, and assets
565
580
  */
566
581
  async get(idOrAccessor, options) {
567
582
  const queryString = this.buildQueryString(options);
@@ -597,23 +612,23 @@ class EventsResource extends BaseResource {
597
612
  );
598
613
  }
599
614
  /**
600
- * List the posters attached to an event. Convenience over
601
- * `get(idOrAccessor, { expand: ['posters'] })` — returns the
602
- * `posters[]` array (empty when the event has none).
615
+ * List the assets attached to an event. Convenience over
616
+ * `get(idOrAccessor, { expand: ['assets'] })` — returns the
617
+ * `assets[]` array (empty when the event has none).
603
618
  */
604
- async listPosters(idOrAccessor) {
619
+ async listAssets(idOrAccessor) {
605
620
  const event = await this.get(idOrAccessor, {
606
- expand: ["posters"]
621
+ expand: ["assets"]
607
622
  });
608
- return event.posters ?? [];
623
+ return event.assets ?? [];
609
624
  }
610
625
  /**
611
- * Upload a poster image for an event. The SDK builds the multipart
626
+ * Upload a asset image for an event. The SDK builds the multipart
612
627
  * body internally — pass a Buffer/Uint8Array, the original filename,
613
628
  * and the MIME type. The asset is stored and linked to the event via
614
629
  * `event_assets`; returns the new asset and its public URL.
615
630
  */
616
- async uploadPoster(idOrAccessor, file) {
631
+ async uploadAsset(idOrAccessor, file) {
617
632
  const form = new FormData();
618
633
  form.append(
619
634
  "file",
@@ -622,18 +637,18 @@ class EventsResource extends BaseResource {
622
637
  );
623
638
  return this.requestMultipart(
624
639
  "POST",
625
- `/${encodeURIComponent(idOrAccessor)}/posters`,
640
+ `/${encodeURIComponent(idOrAccessor)}/assets`,
626
641
  form
627
642
  );
628
643
  }
629
644
  /**
630
- * Remove a poster from an event. Deletes the asset (storage object +
645
+ * Remove a asset from an event. Deletes the asset (storage object +
631
646
  * DB row + `event_assets` link). Returns `{ success: true }`.
632
647
  */
633
- async removePoster(idOrAccessor, assetId) {
648
+ async removeAsset(idOrAccessor, assetId) {
634
649
  return this.request(
635
650
  "DELETE",
636
- `/${encodeURIComponent(idOrAccessor)}/posters/${encodeURIComponent(assetId)}`
651
+ `/${encodeURIComponent(idOrAccessor)}/assets/${encodeURIComponent(assetId)}`
637
652
  );
638
653
  }
639
654
  }
@@ -775,6 +790,25 @@ class ReservationsResource extends BaseResource {
775
790
  }
776
791
  }
777
792
 
793
+ class RitualsResource extends BaseResource {
794
+ constructor(tokenManager, baseUrl) {
795
+ super(tokenManager, baseUrl, "/rituals");
796
+ }
797
+ /**
798
+ * Get a single ritual by accessor (slug). Returns the ritual with its
799
+ * template schedule (time slots + date overrides), media, and the events
800
+ * materialised from it (with per-day covers).
801
+ * @param accessor - The ritual accessor (e.g. 'a-la-carte-weekend')
802
+ * @returns The ritual document
803
+ */
804
+ async get(accessor) {
805
+ return this.request(
806
+ "GET",
807
+ `/${encodeURIComponent(accessor)}`
808
+ );
809
+ }
810
+ }
811
+
778
812
  class SubscriptionsResource extends BaseResource {
779
813
  constructor(tokenManager, baseUrl) {
780
814
  super(tokenManager, baseUrl, "/subscriptions");
@@ -1399,6 +1433,7 @@ class O3KClient {
1399
1433
  __publicField(this, "orders");
1400
1434
  __publicField(this, "paymentIntents");
1401
1435
  __publicField(this, "reservations");
1436
+ __publicField(this, "rituals");
1402
1437
  __publicField(this, "subscriptions");
1403
1438
  __publicField(this, "teamOrders");
1404
1439
  __publicField(this, "venues");
@@ -1429,6 +1464,7 @@ class O3KClient {
1429
1464
  this.tokenManager,
1430
1465
  this.baseUrl
1431
1466
  );
1467
+ this.rituals = new RitualsResource(this.tokenManager, this.baseUrl);
1432
1468
  this.subscriptions = new SubscriptionsResource(
1433
1469
  this.tokenManager,
1434
1470
  this.baseUrl
package/dist/schemas.cjs CHANGED
@@ -13,9 +13,9 @@ const abandonBasketResponseSchema = v4.z.object({
13
13
 
14
14
  const actorTypeSchema = v4.z.enum(["human", "robot"]);
15
15
 
16
- const adChannelSchema = v4.z.enum(["google"]);
16
+ const adChannelSchema = v4.z.enum(["google", "facebook", "instagram"]);
17
17
 
18
- const adOwnerTypeSchema = v4.z.enum(["event"]);
18
+ const adOwnerTypeSchema = v4.z.enum(["event", "ritual"]);
19
19
 
20
20
  const adStatusSchema = v4.z.enum(["draft", "ready", "archived"]);
21
21
 
@@ -580,6 +580,27 @@ const createAdResponseSchema = v4.z.object({
580
580
  v4.z.array(v4.z.any()),
581
581
  v4.z.object({}).catchall(v4.z.any())
582
582
  ]),
583
+ metaContent: v4.z.nullable(
584
+ v4.z.union([
585
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
586
+ v4.z.array(v4.z.any()),
587
+ v4.z.object({}).catchall(v4.z.any())
588
+ ])
589
+ ),
590
+ metaRefs: v4.z.nullable(
591
+ v4.z.union([
592
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
593
+ v4.z.array(v4.z.any()),
594
+ v4.z.object({}).catchall(v4.z.any())
595
+ ])
596
+ ),
597
+ targetingOverride: v4.z.nullable(
598
+ v4.z.union([
599
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
600
+ v4.z.array(v4.z.any()),
601
+ v4.z.object({}).catchall(v4.z.any())
602
+ ])
603
+ ),
583
604
  keywords: v4.z.union([
584
605
  v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
585
606
  v4.z.array(v4.z.any()),
@@ -820,6 +841,27 @@ const deleteAdResponseSchema = v4.z.object({
820
841
  v4.z.array(v4.z.any()),
821
842
  v4.z.object({}).catchall(v4.z.any())
822
843
  ]),
844
+ metaContent: v4.z.nullable(
845
+ v4.z.union([
846
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
847
+ v4.z.array(v4.z.any()),
848
+ v4.z.object({}).catchall(v4.z.any())
849
+ ])
850
+ ),
851
+ metaRefs: v4.z.nullable(
852
+ v4.z.union([
853
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
854
+ v4.z.array(v4.z.any()),
855
+ v4.z.object({}).catchall(v4.z.any())
856
+ ])
857
+ ),
858
+ targetingOverride: v4.z.nullable(
859
+ v4.z.union([
860
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
861
+ v4.z.array(v4.z.any()),
862
+ v4.z.object({}).catchall(v4.z.any())
863
+ ])
864
+ ),
823
865
  keywords: v4.z.union([
824
866
  v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
825
867
  v4.z.array(v4.z.any()),
@@ -948,6 +990,27 @@ const editAdResponseSchema = v4.z.object({
948
990
  v4.z.array(v4.z.any()),
949
991
  v4.z.object({}).catchall(v4.z.any())
950
992
  ]),
993
+ metaContent: v4.z.nullable(
994
+ v4.z.union([
995
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
996
+ v4.z.array(v4.z.any()),
997
+ v4.z.object({}).catchall(v4.z.any())
998
+ ])
999
+ ),
1000
+ metaRefs: v4.z.nullable(
1001
+ v4.z.union([
1002
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1003
+ v4.z.array(v4.z.any()),
1004
+ v4.z.object({}).catchall(v4.z.any())
1005
+ ])
1006
+ ),
1007
+ targetingOverride: v4.z.nullable(
1008
+ v4.z.union([
1009
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1010
+ v4.z.array(v4.z.any()),
1011
+ v4.z.object({}).catchall(v4.z.any())
1012
+ ])
1013
+ ),
951
1014
  keywords: v4.z.union([
952
1015
  v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
953
1016
  v4.z.array(v4.z.any()),
@@ -1188,6 +1251,103 @@ const editEventResponseSchema = v4.z.object({
1188
1251
  )
1189
1252
  }).describe("Successfully updated event with schedule");
1190
1253
 
1254
+ const editMetaAdRequestSchema = v4.z.object({
1255
+ venueAccessor: v4.z.string().min(1),
1256
+ id: v4.z.string().min(1),
1257
+ metaContent: v4.z.optional(
1258
+ v4.z.object({
1259
+ primaryText: v4.z.object({}).catchall(v4.z.string().max(125)),
1260
+ headline: v4.z.object({}).catchall(v4.z.string().max(40)),
1261
+ description: v4.z.object({}).catchall(v4.z.string().max(30)),
1262
+ finalUrl: v4.z.url(),
1263
+ callToAction: v4.z.string(),
1264
+ creatives: v4.z.object({}).catchall(
1265
+ v4.z.object({
1266
+ assetId: v4.z.string()
1267
+ })
1268
+ )
1269
+ })
1270
+ ),
1271
+ get status() {
1272
+ return adStatusSchema.optional();
1273
+ }
1274
+ }).describe("Partial-update body for an existing Meta ad");
1275
+
1276
+ const editMetaAdResponseSchema = v4.z.object({
1277
+ id: v4.z.string(),
1278
+ venueId: v4.z.string(),
1279
+ get ownerEntityType() {
1280
+ return adOwnerTypeSchema;
1281
+ },
1282
+ ownerEntityId: v4.z.string(),
1283
+ get channel() {
1284
+ return adChannelSchema;
1285
+ },
1286
+ get status() {
1287
+ return adStatusSchema;
1288
+ },
1289
+ campaignId: v4.z.nullable(v4.z.string()),
1290
+ content: v4.z.union([
1291
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1292
+ v4.z.array(v4.z.any()),
1293
+ v4.z.object({}).catchall(v4.z.any())
1294
+ ]),
1295
+ metaContent: v4.z.nullable(
1296
+ v4.z.union([
1297
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1298
+ v4.z.array(v4.z.any()),
1299
+ v4.z.object({}).catchall(v4.z.any())
1300
+ ])
1301
+ ),
1302
+ metaRefs: v4.z.nullable(
1303
+ v4.z.union([
1304
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1305
+ v4.z.array(v4.z.any()),
1306
+ v4.z.object({}).catchall(v4.z.any())
1307
+ ])
1308
+ ),
1309
+ targetingOverride: v4.z.nullable(
1310
+ v4.z.union([
1311
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1312
+ v4.z.array(v4.z.any()),
1313
+ v4.z.object({}).catchall(v4.z.any())
1314
+ ])
1315
+ ),
1316
+ keywords: v4.z.union([
1317
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1318
+ v4.z.array(v4.z.any()),
1319
+ v4.z.object({}).catchall(v4.z.any())
1320
+ ]),
1321
+ negativeKeywords: v4.z.union([
1322
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1323
+ v4.z.array(v4.z.any()),
1324
+ v4.z.object({}).catchall(v4.z.any())
1325
+ ]),
1326
+ disabledVenueKeywords: v4.z.union([
1327
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1328
+ v4.z.array(v4.z.any()),
1329
+ v4.z.object({}).catchall(v4.z.any())
1330
+ ]),
1331
+ dismissedKeywords: v4.z.union([
1332
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1333
+ v4.z.array(v4.z.any()),
1334
+ v4.z.object({}).catchall(v4.z.any())
1335
+ ]),
1336
+ publishedContentHash: v4.z.nullable(v4.z.string()),
1337
+ publishedAt: v4.z.nullable(v4.z.any()),
1338
+ pushedKeywords: v4.z.nullable(
1339
+ v4.z.union([
1340
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1341
+ v4.z.array(v4.z.any()),
1342
+ v4.z.object({}).catchall(v4.z.any())
1343
+ ])
1344
+ ),
1345
+ createdBy: v4.z.nullable(v4.z.string()),
1346
+ updatedBy: v4.z.nullable(v4.z.string()),
1347
+ createdAt: v4.z.nullable(v4.z.any()),
1348
+ updatedAt: v4.z.nullable(v4.z.any())
1349
+ }).describe("Successfully updated Meta ad");
1350
+
1191
1351
  const entityOwnerTypeSchema = v4.z.enum([
1192
1352
  "event",
1193
1353
  "dish",
@@ -1260,6 +1420,27 @@ const fetchAdResponseSchema = v4.z.object({
1260
1420
  v4.z.array(v4.z.any()),
1261
1421
  v4.z.object({}).catchall(v4.z.any())
1262
1422
  ]),
1423
+ metaContent: v4.z.nullable(
1424
+ v4.z.union([
1425
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1426
+ v4.z.array(v4.z.any()),
1427
+ v4.z.object({}).catchall(v4.z.any())
1428
+ ])
1429
+ ),
1430
+ metaRefs: v4.z.nullable(
1431
+ v4.z.union([
1432
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1433
+ v4.z.array(v4.z.any()),
1434
+ v4.z.object({}).catchall(v4.z.any())
1435
+ ])
1436
+ ),
1437
+ targetingOverride: v4.z.nullable(
1438
+ v4.z.union([
1439
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1440
+ v4.z.array(v4.z.any()),
1441
+ v4.z.object({}).catchall(v4.z.any())
1442
+ ])
1443
+ ),
1263
1444
  keywords: v4.z.union([
1264
1445
  v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1265
1446
  v4.z.array(v4.z.any()),
@@ -1315,6 +1496,27 @@ const fetchAdsResponseSchema = v4.z.array(
1315
1496
  v4.z.array(v4.z.any()),
1316
1497
  v4.z.object({}).catchall(v4.z.any())
1317
1498
  ]),
1499
+ metaContent: v4.z.nullable(
1500
+ v4.z.union([
1501
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1502
+ v4.z.array(v4.z.any()),
1503
+ v4.z.object({}).catchall(v4.z.any())
1504
+ ])
1505
+ ),
1506
+ metaRefs: v4.z.nullable(
1507
+ v4.z.union([
1508
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1509
+ v4.z.array(v4.z.any()),
1510
+ v4.z.object({}).catchall(v4.z.any())
1511
+ ])
1512
+ ),
1513
+ targetingOverride: v4.z.nullable(
1514
+ v4.z.union([
1515
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1516
+ v4.z.array(v4.z.any()),
1517
+ v4.z.object({}).catchall(v4.z.any())
1518
+ ])
1519
+ ),
1318
1520
  keywords: v4.z.union([
1319
1521
  v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
1320
1522
  v4.z.array(v4.z.any()),
@@ -1681,7 +1883,7 @@ const fetchEventResponseSchema = v4.z.object({
1681
1883
  )
1682
1884
  )
1683
1885
  }).describe(
1684
- "Event details. Nested objects (schedule, timeSlots, menus, posters, nextOccurrence) pass through; their shape follows the SDK Event interface."
1886
+ "Event details. Nested objects (schedule, timeSlots, menus, assets, nextOccurrence) pass through; their shape follows the SDK Event interface."
1685
1887
  );
1686
1888
 
1687
1889
  const promotionBenefitTypeSchema = v4.z.enum([
@@ -2252,6 +2454,233 @@ const fetchMenuSubscriptionsResponseSchema = v4.z.array(
2252
2454
  })
2253
2455
  );
2254
2456
 
2457
+ const fetchRitualResponseSchema = v4.z.object({
2458
+ id: v4.z.string(),
2459
+ venueId: v4.z.string(),
2460
+ accessor: v4.z.string(),
2461
+ get ritualType() {
2462
+ return ritualTypeSchema;
2463
+ },
2464
+ scheduleId: v4.z.nullable(v4.z.string()),
2465
+ name: v4.z.union([
2466
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
2467
+ v4.z.array(v4.z.any()),
2468
+ v4.z.object({}).catchall(v4.z.any())
2469
+ ]),
2470
+ description: v4.z.nullable(
2471
+ v4.z.union([
2472
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
2473
+ v4.z.array(v4.z.any()),
2474
+ v4.z.object({}).catchall(v4.z.any())
2475
+ ])
2476
+ ),
2477
+ playbook: v4.z.nullable(
2478
+ v4.z.union([
2479
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
2480
+ v4.z.array(v4.z.any()),
2481
+ v4.z.object({}).catchall(v4.z.any())
2482
+ ])
2483
+ ),
2484
+ maxBookings: v4.z.nullable(v4.z.int().min(-2147483648).max(2147483647)),
2485
+ maxGuests: v4.z.nullable(v4.z.int().min(-2147483648).max(2147483647)),
2486
+ minPartySize: v4.z.nullable(v4.z.int().min(-2147483648).max(2147483647)),
2487
+ maxPartySize: v4.z.nullable(v4.z.int().min(-2147483648).max(2147483647)),
2488
+ isPublic: v4.z.boolean(),
2489
+ reservationsEnabled: v4.z.boolean(),
2490
+ bookingOpensAtDays: v4.z.nullable(v4.z.int().min(-2147483648).max(2147483647)),
2491
+ bookingClosesAtOffset: v4.z.nullable(v4.z.int().min(-2147483648).max(2147483647)),
2492
+ isActive: v4.z.boolean(),
2493
+ isFeatured: v4.z.boolean(),
2494
+ priority: v4.z.int().min(-2147483648).max(2147483647),
2495
+ createdBy: v4.z.nullable(v4.z.string()),
2496
+ updatedBy: v4.z.nullable(v4.z.string()),
2497
+ createdAt: v4.z.nullable(v4.z.any()),
2498
+ updatedAt: v4.z.nullable(v4.z.any()),
2499
+ assets: v4.z.array(
2500
+ v4.z.object({
2501
+ id: v4.z.string(),
2502
+ get type() {
2503
+ return assetTypeSchema;
2504
+ },
2505
+ tags: v4.z.nullable(v4.z.array(v4.z.string())),
2506
+ bucket: v4.z.string(),
2507
+ storagePath: v4.z.string(),
2508
+ filename: v4.z.string(),
2509
+ contentType: v4.z.string(),
2510
+ sizeBytes: v4.z.int().min(-2147483648).max(2147483647),
2511
+ caption: v4.z.union([
2512
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
2513
+ v4.z.array(v4.z.any()),
2514
+ v4.z.object({}).catchall(v4.z.any())
2515
+ ]),
2516
+ alt: v4.z.union([
2517
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
2518
+ v4.z.array(v4.z.any()),
2519
+ v4.z.object({}).catchall(v4.z.any())
2520
+ ]),
2521
+ metadata: v4.z.nullable(
2522
+ v4.z.union([
2523
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
2524
+ v4.z.array(v4.z.any()),
2525
+ v4.z.object({}).catchall(v4.z.any())
2526
+ ])
2527
+ ),
2528
+ cropArea: v4.z.nullable(
2529
+ v4.z.union([
2530
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
2531
+ v4.z.array(v4.z.any()),
2532
+ v4.z.object({}).catchall(v4.z.any())
2533
+ ])
2534
+ ),
2535
+ isActive: v4.z.boolean(),
2536
+ sortIndex: v4.z.nullable(v4.z.string().max(255)),
2537
+ createdAt: v4.z.nullable(v4.z.any()),
2538
+ updatedAt: v4.z.nullable(v4.z.any()),
2539
+ createdBy: v4.z.nullable(v4.z.string()),
2540
+ updatedBy: v4.z.nullable(v4.z.string()),
2541
+ venueId: v4.z.nullable(v4.z.string()),
2542
+ publicUrl: v4.z.string()
2543
+ })
2544
+ ),
2545
+ events: v4.z.array(
2546
+ v4.z.object({
2547
+ id: v4.z.string(),
2548
+ venueId: v4.z.string(),
2549
+ accessor: v4.z.nullable(v4.z.string()),
2550
+ name: v4.z.union([
2551
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
2552
+ v4.z.array(v4.z.any()),
2553
+ v4.z.object({}).catchall(v4.z.any())
2554
+ ]),
2555
+ description: v4.z.nullable(
2556
+ v4.z.union([
2557
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
2558
+ v4.z.array(v4.z.any()),
2559
+ v4.z.object({}).catchall(v4.z.any())
2560
+ ])
2561
+ ),
2562
+ scheduleId: v4.z.nullable(v4.z.string()),
2563
+ ritualId: v4.z.nullable(v4.z.string()),
2564
+ occurrenceDate: v4.z.nullable(v4.z.string()),
2565
+ maxBookings: v4.z.nullable(v4.z.int().min(-2147483648).max(2147483647)),
2566
+ maxGuests: v4.z.nullable(v4.z.int().min(-2147483648).max(2147483647)),
2567
+ minPartySize: v4.z.nullable(v4.z.int().min(-2147483648).max(2147483647)),
2568
+ maxPartySize: v4.z.nullable(v4.z.int().min(-2147483648).max(2147483647)),
2569
+ isPublic: v4.z.boolean(),
2570
+ reservationsEnabled: v4.z.boolean(),
2571
+ bookingOpensAtDays: v4.z.nullable(v4.z.int().min(-2147483648).max(2147483647)),
2572
+ bookingClosesAtOffset: v4.z.nullable(
2573
+ v4.z.int().min(-2147483648).max(2147483647)
2574
+ ),
2575
+ isActive: v4.z.boolean(),
2576
+ isFeatured: v4.z.boolean(),
2577
+ priority: v4.z.int().min(-2147483648).max(2147483647),
2578
+ createdBy: v4.z.nullable(v4.z.string()),
2579
+ updatedBy: v4.z.nullable(v4.z.string()),
2580
+ createdAt: v4.z.nullable(v4.z.any()),
2581
+ updatedAt: v4.z.nullable(v4.z.any()),
2582
+ covers: v4.z.number()
2583
+ })
2584
+ ),
2585
+ schedule: v4.z.nullable(
2586
+ v4.z.object({
2587
+ id: v4.z.string(),
2588
+ name: v4.z.union([
2589
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
2590
+ v4.z.array(v4.z.any()),
2591
+ v4.z.object({}).catchall(v4.z.any())
2592
+ ]),
2593
+ description: v4.z.nullable(
2594
+ v4.z.union([
2595
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
2596
+ v4.z.array(v4.z.any()),
2597
+ v4.z.object({}).catchall(v4.z.any())
2598
+ ])
2599
+ ),
2600
+ timezone: v4.z.string(),
2601
+ rrule: v4.z.nullable(v4.z.string()),
2602
+ exdates: v4.z.nullable(v4.z.array(v4.z.string())),
2603
+ validFrom: v4.z.nullable(v4.z.string()),
2604
+ validTo: v4.z.nullable(v4.z.string()),
2605
+ priority: v4.z.nullable(v4.z.int().min(-2147483648).max(2147483647)),
2606
+ get slotMode() {
2607
+ return slotModeSchema;
2608
+ },
2609
+ intervalDuration: v4.z.nullable(v4.z.int().min(-2147483648).max(2147483647)),
2610
+ duration: v4.z.nullable(v4.z.int().min(-2147483648).max(2147483647)),
2611
+ isActive: v4.z.boolean(),
2612
+ sortIndex: v4.z.nullable(v4.z.string().max(255)),
2613
+ updatedAt: v4.z.nullable(v4.z.any()),
2614
+ updatedBy: v4.z.nullable(v4.z.string()),
2615
+ createdAt: v4.z.nullable(v4.z.any()),
2616
+ createdBy: v4.z.nullable(v4.z.string()),
2617
+ scheduleTimeSlots: v4.z.array(
2618
+ v4.z.object({
2619
+ scheduleId: v4.z.nullable(v4.z.string()),
2620
+ timeSlotId: v4.z.nullable(v4.z.string()),
2621
+ get dayOfWeek() {
2622
+ return dayOfWeekSchema;
2623
+ },
2624
+ sortIndex: v4.z.nullable(v4.z.string().max(255)),
2625
+ timeSlot: v4.z.nullable(
2626
+ v4.z.object({
2627
+ id: v4.z.string(),
2628
+ startTime: v4.z.string(),
2629
+ endTime: v4.z.nullable(v4.z.string()),
2630
+ isActive: v4.z.nullable(v4.z.boolean()),
2631
+ isSchedulable: v4.z.nullable(v4.z.boolean()),
2632
+ sortIndex: v4.z.nullable(v4.z.string().max(255)),
2633
+ updatedAt: v4.z.nullable(v4.z.any()),
2634
+ updatedBy: v4.z.nullable(v4.z.string()),
2635
+ createdAt: v4.z.nullable(v4.z.any()),
2636
+ createdBy: v4.z.nullable(v4.z.string())
2637
+ })
2638
+ )
2639
+ })
2640
+ ),
2641
+ scheduleOverrides: v4.z.array(
2642
+ v4.z.object({
2643
+ id: v4.z.string(),
2644
+ scheduleId: v4.z.string(),
2645
+ date: v4.z.string(),
2646
+ reason: v4.z.nullable(
2647
+ v4.z.union([
2648
+ v4.z.union([v4.z.boolean(), v4.z.string(), v4.z.number(), v4.z.enum([])]),
2649
+ v4.z.array(v4.z.any()),
2650
+ v4.z.object({}).catchall(v4.z.any())
2651
+ ])
2652
+ ),
2653
+ isActive: v4.z.boolean(),
2654
+ priority: v4.z.nullable(v4.z.int().min(-2147483648).max(2147483647)),
2655
+ updatedAt: v4.z.nullable(v4.z.any()),
2656
+ updatedBy: v4.z.nullable(v4.z.string()),
2657
+ createdAt: v4.z.nullable(v4.z.any()),
2658
+ createdBy: v4.z.nullable(v4.z.string()),
2659
+ scheduleOverrideTimeSlots: v4.z.array(
2660
+ v4.z.object({
2661
+ overrideId: v4.z.string(),
2662
+ timeSlotId: v4.z.string(),
2663
+ sortIndex: v4.z.nullable(v4.z.string().max(255)),
2664
+ timeSlot: v4.z.object({
2665
+ id: v4.z.string(),
2666
+ startTime: v4.z.string(),
2667
+ endTime: v4.z.nullable(v4.z.string()),
2668
+ isActive: v4.z.nullable(v4.z.boolean()),
2669
+ isSchedulable: v4.z.nullable(v4.z.boolean()),
2670
+ sortIndex: v4.z.nullable(v4.z.string().max(255)),
2671
+ updatedAt: v4.z.nullable(v4.z.any()),
2672
+ updatedBy: v4.z.nullable(v4.z.string()),
2673
+ createdAt: v4.z.nullable(v4.z.any()),
2674
+ createdBy: v4.z.nullable(v4.z.string())
2675
+ })
2676
+ })
2677
+ )
2678
+ })
2679
+ )
2680
+ })
2681
+ )
2682
+ });
2683
+
2255
2684
  const fetchTeamOrderResponseSchema = v4.z.object({
2256
2685
  teamOrder: v4.z.object({
2257
2686
  id: v4.z.string(),
@@ -2371,6 +2800,21 @@ const fetchTeamOrderResponseSchema = v4.z.object({
2371
2800
  isLead: v4.z.boolean()
2372
2801
  });
2373
2802
 
2803
+ const gbpMediaCategorySchema = v4.z.enum([
2804
+ "cover",
2805
+ "logo",
2806
+ "gallery",
2807
+ "video"
2808
+ ]);
2809
+
2810
+ const gbpSyncStatusSchema = v4.z.enum([
2811
+ "processing",
2812
+ "live",
2813
+ "rejected",
2814
+ "failed",
2815
+ "removed"
2816
+ ]);
2817
+
2374
2818
  const getAreaAvailabilityResponseSchema = v4.z.object({
2375
2819
  from: v4.z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
2376
2820
  to: v4.z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
@@ -2505,7 +2949,12 @@ const integrationNotificationTypeSchema = v4.z.enum([
2505
2949
  "reservation_cancelled"
2506
2950
  ]);
2507
2951
 
2508
- const integrationTypeSchema = v4.z.enum(["telegram", "google_ads"]);
2952
+ const integrationTypeSchema = v4.z.enum([
2953
+ "telegram",
2954
+ "google_ads",
2955
+ "google_business_profile",
2956
+ "meta_ads"
2957
+ ]);
2509
2958
 
2510
2959
  const inventoryAssetStatusSchema = v4.z.enum([
2511
2960
  "available",
@@ -2771,6 +3220,9 @@ const makeReservationRequestSchema = v4.z.object({
2771
3220
  ).nullish(),
2772
3221
  wbraid: v4.z.string().describe(
2773
3222
  "Google Ads click identifier for web-to-app (iOS) where `gclid` is unavailable."
3223
+ ).nullish(),
3224
+ fbclid: v4.z.string().describe(
3225
+ "Meta (Facebook/Instagram) click identifier from the landing URL. Stored for server-side Conversions API reporting."
2774
3226
  ).nullish()
2775
3227
  }).describe("Request payload for making a new reservation");
2776
3228
 
@@ -2832,6 +3284,7 @@ const makeReservationResponseSchema = v4.z.object({
2832
3284
  gclid: v4.z.nullable(v4.z.string()),
2833
3285
  gbraid: v4.z.nullable(v4.z.string()),
2834
3286
  wbraid: v4.z.nullable(v4.z.string()),
3287
+ fbclid: v4.z.nullable(v4.z.string()),
2835
3288
  specialRequests: v4.z.nullable(
2836
3289
  v4.z.string().describe("Any special requirements or notes")
2837
3290
  ),
@@ -3310,6 +3763,8 @@ const schemas = {
3310
3763
  EditArticleResponse: editArticleResponseSchema,
3311
3764
  EditEventRequest: editEventRequestSchema,
3312
3765
  EditEventResponse: editEventResponseSchema,
3766
+ EditMetaAdRequest: editMetaAdRequestSchema,
3767
+ EditMetaAdResponse: editMetaAdResponseSchema,
3313
3768
  EntityOwnerType: entityOwnerTypeSchema,
3314
3769
  EnumFalse: enumFalseSchema,
3315
3770
  EnumTrue: enumTrueSchema,
@@ -3334,8 +3789,11 @@ const schemas = {
3334
3789
  FetchMenuBundlesResponse: fetchMenuBundlesResponseSchema,
3335
3790
  FetchMenuResponse: fetchMenuResponseSchema,
3336
3791
  FetchMenuSubscriptionsResponse: fetchMenuSubscriptionsResponseSchema,
3792
+ FetchRitualResponse: fetchRitualResponseSchema,
3337
3793
  FetchTeamOrderResponse: fetchTeamOrderResponseSchema,
3338
3794
  FulfillmentType: deliveryAddressSchema.fulfillmentTypeSchema,
3795
+ GbpMediaCategory: gbpMediaCategorySchema,
3796
+ GbpSyncStatus: gbpSyncStatusSchema,
3339
3797
  GetAreaAvailabilityResponse: getAreaAvailabilityResponseSchema,
3340
3798
  GetBasketTotalsRequest: getBasketTotalsRequestSchema,
3341
3799
  GetBasketTotalsResponse: getBasketTotalsResponseSchema,