order3000 1.8.0 → 1.10.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.d.mts CHANGED
@@ -92,14 +92,27 @@ interface components {
92
92
  disabledVenueKeywords: (string | number | boolean | (null)) | {
93
93
  [key: string]: unknown;
94
94
  } | unknown[];
95
+ disabledVenueNegativeKeywords: (string | number | boolean | (null)) | {
96
+ [key: string]: unknown;
97
+ } | unknown[];
95
98
  dismissedKeywords: (string | number | boolean | (null)) | {
96
99
  [key: string]: unknown;
97
100
  } | unknown[];
101
+ keywordMetrics: (string | number | boolean | (null)) | {
102
+ [key: string]: unknown;
103
+ } | unknown[];
104
+ websitePageIds: (string | number | boolean | (null)) | {
105
+ [key: string]: unknown;
106
+ } | unknown[];
107
+ calloutIds: (string | number | boolean | (null)) | {
108
+ [key: string]: unknown;
109
+ } | unknown[];
98
110
  publishedContentHash: string | null;
99
111
  publishedAt: unknown;
100
112
  pushedKeywords: ((string | number | boolean | (null)) | {
101
113
  [key: string]: unknown;
102
114
  } | unknown[]) | null;
115
+ dailyBudget: number | null;
103
116
  createdBy: string | null;
104
117
  updatedBy: string | null;
105
118
  createdAt: unknown;
@@ -135,14 +148,27 @@ interface components {
135
148
  disabledVenueKeywords: (string | number | boolean | (null)) | {
136
149
  [key: string]: unknown;
137
150
  } | unknown[];
151
+ disabledVenueNegativeKeywords: (string | number | boolean | (null)) | {
152
+ [key: string]: unknown;
153
+ } | unknown[];
138
154
  dismissedKeywords: (string | number | boolean | (null)) | {
139
155
  [key: string]: unknown;
140
156
  } | unknown[];
157
+ keywordMetrics: (string | number | boolean | (null)) | {
158
+ [key: string]: unknown;
159
+ } | unknown[];
160
+ websitePageIds: (string | number | boolean | (null)) | {
161
+ [key: string]: unknown;
162
+ } | unknown[];
163
+ calloutIds: (string | number | boolean | (null)) | {
164
+ [key: string]: unknown;
165
+ } | unknown[];
141
166
  publishedContentHash: string | null;
142
167
  publishedAt: unknown;
143
168
  pushedKeywords: ((string | number | boolean | (null)) | {
144
169
  [key: string]: unknown;
145
170
  } | unknown[]) | null;
171
+ dailyBudget: number | null;
146
172
  createdBy: string | null;
147
173
  updatedBy: string | null;
148
174
  createdAt: unknown;
@@ -191,14 +217,27 @@ interface components {
191
217
  disabledVenueKeywords: (string | number | boolean | (null)) | {
192
218
  [key: string]: unknown;
193
219
  } | unknown[];
220
+ disabledVenueNegativeKeywords: (string | number | boolean | (null)) | {
221
+ [key: string]: unknown;
222
+ } | unknown[];
194
223
  dismissedKeywords: (string | number | boolean | (null)) | {
195
224
  [key: string]: unknown;
196
225
  } | unknown[];
226
+ keywordMetrics: (string | number | boolean | (null)) | {
227
+ [key: string]: unknown;
228
+ } | unknown[];
229
+ websitePageIds: (string | number | boolean | (null)) | {
230
+ [key: string]: unknown;
231
+ } | unknown[];
232
+ calloutIds: (string | number | boolean | (null)) | {
233
+ [key: string]: unknown;
234
+ } | unknown[];
197
235
  publishedContentHash: string | null;
198
236
  publishedAt: unknown;
199
237
  pushedKeywords: ((string | number | boolean | (null)) | {
200
238
  [key: string]: unknown;
201
239
  } | unknown[]) | null;
240
+ dailyBudget: number | null;
202
241
  createdBy: string | null;
203
242
  updatedBy: string | null;
204
243
  createdAt: unknown;
@@ -262,14 +301,27 @@ interface components {
262
301
  disabledVenueKeywords: (string | number | boolean | (null)) | {
263
302
  [key: string]: unknown;
264
303
  } | unknown[];
304
+ disabledVenueNegativeKeywords: (string | number | boolean | (null)) | {
305
+ [key: string]: unknown;
306
+ } | unknown[];
265
307
  dismissedKeywords: (string | number | boolean | (null)) | {
266
308
  [key: string]: unknown;
267
309
  } | unknown[];
310
+ keywordMetrics: (string | number | boolean | (null)) | {
311
+ [key: string]: unknown;
312
+ } | unknown[];
313
+ websitePageIds: (string | number | boolean | (null)) | {
314
+ [key: string]: unknown;
315
+ } | unknown[];
316
+ calloutIds: (string | number | boolean | (null)) | {
317
+ [key: string]: unknown;
318
+ } | unknown[];
268
319
  publishedContentHash: string | null;
269
320
  publishedAt: unknown;
270
321
  pushedKeywords: ((string | number | boolean | (null)) | {
271
322
  [key: string]: unknown;
272
323
  } | unknown[]) | null;
324
+ dailyBudget: number | null;
273
325
  createdBy: string | null;
274
326
  updatedBy: string | null;
275
327
  createdAt: unknown;
@@ -336,14 +388,27 @@ interface components {
336
388
  disabledVenueKeywords: (string | number | boolean | (null)) | {
337
389
  [key: string]: unknown;
338
390
  } | unknown[];
391
+ disabledVenueNegativeKeywords: (string | number | boolean | (null)) | {
392
+ [key: string]: unknown;
393
+ } | unknown[];
339
394
  dismissedKeywords: (string | number | boolean | (null)) | {
340
395
  [key: string]: unknown;
341
396
  } | unknown[];
397
+ keywordMetrics: (string | number | boolean | (null)) | {
398
+ [key: string]: unknown;
399
+ } | unknown[];
400
+ websitePageIds: (string | number | boolean | (null)) | {
401
+ [key: string]: unknown;
402
+ } | unknown[];
403
+ calloutIds: (string | number | boolean | (null)) | {
404
+ [key: string]: unknown;
405
+ } | unknown[];
342
406
  publishedContentHash: string | null;
343
407
  publishedAt: unknown;
344
408
  pushedKeywords: ((string | number | boolean | (null)) | {
345
409
  [key: string]: unknown;
346
410
  } | unknown[]) | null;
411
+ dailyBudget: number | null;
347
412
  createdBy: string | null;
348
413
  updatedBy: string | null;
349
414
  createdAt: unknown;
@@ -364,6 +429,105 @@ interface components {
364
429
  dismissedKeywords: string[];
365
430
  disabledVenueKeywords: string[];
366
431
  };
432
+ /** SaveAdCalloutsRequest */
433
+ SaveAdCalloutsRequest: {
434
+ venueAccessor: string;
435
+ adId: string;
436
+ calloutIds: string[];
437
+ };
438
+ /** SaveAdCalloutsResponse */
439
+ SaveAdCalloutsResponse: {
440
+ success: boolean;
441
+ calloutIds: string[];
442
+ };
443
+ /** SaveAdNegativeKeywordsRequest */
444
+ SaveAdNegativeKeywordsRequest: {
445
+ venueAccessor: string;
446
+ adId: string;
447
+ negativeKeywords: string[];
448
+ /** @default [] */
449
+ disabledVenueNegativeKeywords: string[];
450
+ };
451
+ /** SaveAdNegativeKeywordsResponse */
452
+ SaveAdNegativeKeywordsResponse: {
453
+ success: boolean;
454
+ negativeKeywords: string[];
455
+ disabledVenueNegativeKeywords: string[];
456
+ syncedToGoogle: boolean;
457
+ };
458
+ /** SaveAdWebsitePagesRequest */
459
+ SaveAdWebsitePagesRequest: {
460
+ venueAccessor: string;
461
+ adId: string;
462
+ websitePageIds: string[];
463
+ };
464
+ /** SaveAdWebsitePagesResponse */
465
+ SaveAdWebsitePagesResponse: {
466
+ success: boolean;
467
+ websitePageIds: string[];
468
+ };
469
+ /** SetAdBudgetRequest */
470
+ SetAdBudgetRequest: {
471
+ venueAccessor: string;
472
+ adId: string;
473
+ dailyBudget: number;
474
+ };
475
+ /** SetAdBudgetResponse */
476
+ SetAdBudgetResponse: {
477
+ id: string;
478
+ venueId: string;
479
+ ownerEntityType: components["schemas"]["AdOwnerType"];
480
+ ownerEntityId: string;
481
+ channel: components["schemas"]["AdChannel"];
482
+ status: components["schemas"]["AdStatus"];
483
+ campaignId: string | null;
484
+ content: (string | number | boolean | (null)) | {
485
+ [key: string]: unknown;
486
+ } | unknown[];
487
+ metaContent: ((string | number | boolean | (null)) | {
488
+ [key: string]: unknown;
489
+ } | unknown[]) | null;
490
+ metaRefs: ((string | number | boolean | (null)) | {
491
+ [key: string]: unknown;
492
+ } | unknown[]) | null;
493
+ servedMarket: ((string | number | boolean | (null)) | {
494
+ [key: string]: unknown;
495
+ } | unknown[]) | null;
496
+ keywords: (string | number | boolean | (null)) | {
497
+ [key: string]: unknown;
498
+ } | unknown[];
499
+ negativeKeywords: (string | number | boolean | (null)) | {
500
+ [key: string]: unknown;
501
+ } | unknown[];
502
+ disabledVenueKeywords: (string | number | boolean | (null)) | {
503
+ [key: string]: unknown;
504
+ } | unknown[];
505
+ disabledVenueNegativeKeywords: (string | number | boolean | (null)) | {
506
+ [key: string]: unknown;
507
+ } | unknown[];
508
+ dismissedKeywords: (string | number | boolean | (null)) | {
509
+ [key: string]: unknown;
510
+ } | unknown[];
511
+ keywordMetrics: (string | number | boolean | (null)) | {
512
+ [key: string]: unknown;
513
+ } | unknown[];
514
+ websitePageIds: (string | number | boolean | (null)) | {
515
+ [key: string]: unknown;
516
+ } | unknown[];
517
+ calloutIds: (string | number | boolean | (null)) | {
518
+ [key: string]: unknown;
519
+ } | unknown[];
520
+ publishedContentHash: string | null;
521
+ publishedAt: unknown;
522
+ pushedKeywords: ((string | number | boolean | (null)) | {
523
+ [key: string]: unknown;
524
+ } | unknown[]) | null;
525
+ dailyBudget: number | null;
526
+ createdBy: string | null;
527
+ updatedBy: string | null;
528
+ createdAt: unknown;
529
+ updatedAt: unknown;
530
+ };
367
531
  /** DeleteAdResponse */
368
532
  DeleteAdResponse: {
369
533
  id: string;
@@ -394,14 +558,27 @@ interface components {
394
558
  disabledVenueKeywords: (string | number | boolean | (null)) | {
395
559
  [key: string]: unknown;
396
560
  } | unknown[];
561
+ disabledVenueNegativeKeywords: (string | number | boolean | (null)) | {
562
+ [key: string]: unknown;
563
+ } | unknown[];
397
564
  dismissedKeywords: (string | number | boolean | (null)) | {
398
565
  [key: string]: unknown;
399
566
  } | unknown[];
567
+ keywordMetrics: (string | number | boolean | (null)) | {
568
+ [key: string]: unknown;
569
+ } | unknown[];
570
+ websitePageIds: (string | number | boolean | (null)) | {
571
+ [key: string]: unknown;
572
+ } | unknown[];
573
+ calloutIds: (string | number | boolean | (null)) | {
574
+ [key: string]: unknown;
575
+ } | unknown[];
400
576
  publishedContentHash: string | null;
401
577
  publishedAt: unknown;
402
578
  pushedKeywords: ((string | number | boolean | (null)) | {
403
579
  [key: string]: unknown;
404
580
  } | unknown[]) | null;
581
+ dailyBudget: number | null;
405
582
  createdBy: string | null;
406
583
  updatedBy: string | null;
407
584
  createdAt: unknown;
@@ -991,6 +1168,70 @@ interface components {
991
1168
  count: number;
992
1169
  }[];
993
1170
  };
1171
+ /** GetCalloutsResponse */
1172
+ GetCalloutsResponse: {
1173
+ id: string;
1174
+ venueId: string;
1175
+ label: (string | number | boolean | (null)) | {
1176
+ [key: string]: unknown;
1177
+ } | unknown[];
1178
+ createdBy: string | null;
1179
+ updatedBy: string | null;
1180
+ createdAt: unknown;
1181
+ updatedAt: unknown;
1182
+ }[];
1183
+ /** CreateCalloutRequest */
1184
+ CreateCalloutRequest: {
1185
+ venueAccessor: string;
1186
+ id?: string;
1187
+ label: {
1188
+ [key: string]: string;
1189
+ };
1190
+ };
1191
+ /** CreateCalloutResponse */
1192
+ CreateCalloutResponse: {
1193
+ id: string;
1194
+ venueId: string;
1195
+ label: (string | number | boolean | (null)) | {
1196
+ [key: string]: unknown;
1197
+ } | unknown[];
1198
+ createdBy: string | null;
1199
+ updatedBy: string | null;
1200
+ createdAt: unknown;
1201
+ updatedAt: unknown;
1202
+ };
1203
+ /** UpdateCalloutRequest */
1204
+ UpdateCalloutRequest: {
1205
+ venueAccessor: string;
1206
+ id: string;
1207
+ label: {
1208
+ [key: string]: string;
1209
+ };
1210
+ };
1211
+ /** UpdateCalloutResponse */
1212
+ UpdateCalloutResponse: {
1213
+ id: string;
1214
+ venueId: string;
1215
+ label: (string | number | boolean | (null)) | {
1216
+ [key: string]: unknown;
1217
+ } | unknown[];
1218
+ createdBy: string | null;
1219
+ updatedBy: string | null;
1220
+ createdAt: unknown;
1221
+ updatedAt: unknown;
1222
+ };
1223
+ /** DeleteCalloutResponse */
1224
+ DeleteCalloutResponse: {
1225
+ id: string;
1226
+ venueId: string;
1227
+ label: (string | number | boolean | (null)) | {
1228
+ [key: string]: unknown;
1229
+ } | unknown[];
1230
+ createdBy: string | null;
1231
+ updatedBy: string | null;
1232
+ createdAt: unknown;
1233
+ updatedAt: unknown;
1234
+ };
994
1235
  /** FetchEventsResponse */
995
1236
  FetchEventsResponse: {
996
1237
  id: string;
@@ -1585,12 +1826,14 @@ interface components {
1585
1826
  createdBy: string | null;
1586
1827
  updatedBy: string | null;
1587
1828
  venueId: string | null;
1829
+ contentHash: string | null;
1588
1830
  };
1589
1831
  publicUrl: string | null;
1590
1832
  };
1591
1833
  /** DeleteAssetResponse */
1592
1834
  DeleteAssetResponse: {
1593
1835
  success: boolean;
1836
+ deleted: boolean;
1594
1837
  };
1595
1838
  /**
1596
1839
  * FetchMenuResponse
@@ -2189,6 +2432,7 @@ interface components {
2189
2432
  createdBy: string | null;
2190
2433
  updatedBy: string | null;
2191
2434
  venueId: string | null;
2435
+ contentHash: string | null;
2192
2436
  publicUrl: string;
2193
2437
  }[];
2194
2438
  events: {
@@ -2621,6 +2865,90 @@ interface components {
2621
2865
  createdAt: unknown;
2622
2866
  updatedAt: unknown;
2623
2867
  };
2868
+ /** GetWebsitePagesResponse */
2869
+ GetWebsitePagesResponse: {
2870
+ id: string;
2871
+ venueId: string;
2872
+ ownerType: components["schemas"]["WebsitePageOwnerType"];
2873
+ ownerId: string | null;
2874
+ label: ((string | number | boolean | (null)) | {
2875
+ [key: string]: unknown;
2876
+ } | unknown[]) | null;
2877
+ path: string | null;
2878
+ externalUrl: string | null;
2879
+ createdBy: string | null;
2880
+ updatedBy: string | null;
2881
+ createdAt: unknown;
2882
+ updatedAt: unknown;
2883
+ }[];
2884
+ /** CreateWebsitePageRequest */
2885
+ CreateWebsitePageRequest: {
2886
+ venueAccessor: string;
2887
+ id?: string;
2888
+ ownerType?: components["schemas"]["WebsitePageOwnerType"];
2889
+ ownerId?: string | null;
2890
+ label?: {
2891
+ [key: string]: string;
2892
+ } | null;
2893
+ target: string;
2894
+ };
2895
+ /** CreateWebsitePageResponse */
2896
+ CreateWebsitePageResponse: {
2897
+ id: string;
2898
+ venueId: string;
2899
+ ownerType: components["schemas"]["WebsitePageOwnerType"];
2900
+ ownerId: string | null;
2901
+ label: ((string | number | boolean | (null)) | {
2902
+ [key: string]: unknown;
2903
+ } | unknown[]) | null;
2904
+ path: string | null;
2905
+ externalUrl: string | null;
2906
+ createdBy: string | null;
2907
+ updatedBy: string | null;
2908
+ createdAt: unknown;
2909
+ updatedAt: unknown;
2910
+ };
2911
+ /** UpdateWebsitePageRequest */
2912
+ UpdateWebsitePageRequest: {
2913
+ venueAccessor: string;
2914
+ id: string;
2915
+ label?: {
2916
+ [key: string]: string;
2917
+ } | null;
2918
+ target: string;
2919
+ };
2920
+ /** UpdateWebsitePageResponse */
2921
+ UpdateWebsitePageResponse: {
2922
+ id: string;
2923
+ venueId: string;
2924
+ ownerType: components["schemas"]["WebsitePageOwnerType"];
2925
+ ownerId: string | null;
2926
+ label: ((string | number | boolean | (null)) | {
2927
+ [key: string]: unknown;
2928
+ } | unknown[]) | null;
2929
+ path: string | null;
2930
+ externalUrl: string | null;
2931
+ createdBy: string | null;
2932
+ updatedBy: string | null;
2933
+ createdAt: unknown;
2934
+ updatedAt: unknown;
2935
+ };
2936
+ /** DeleteWebsitePageResponse */
2937
+ DeleteWebsitePageResponse: {
2938
+ id: string;
2939
+ venueId: string;
2940
+ ownerType: components["schemas"]["WebsitePageOwnerType"];
2941
+ ownerId: string | null;
2942
+ label: ((string | number | boolean | (null)) | {
2943
+ [key: string]: unknown;
2944
+ } | unknown[]) | null;
2945
+ path: string | null;
2946
+ externalUrl: string | null;
2947
+ createdBy: string | null;
2948
+ updatedBy: string | null;
2949
+ createdAt: unknown;
2950
+ updatedAt: unknown;
2951
+ };
2624
2952
  /** @enum {string} */
2625
2953
  ActorType: "human" | "robot";
2626
2954
  /** @enum {string} */
@@ -2706,7 +3034,7 @@ interface components {
2706
3034
  /** @enum {string} */
2707
3035
  AdChannel: "google" | "facebook" | "instagram";
2708
3036
  /** @enum {string} */
2709
- AdOwnerType: "event" | "ritual";
3037
+ AdOwnerType: "event" | "ritual" | "venue" | "dish" | "beverage" | "menu";
2710
3038
  /** @enum {string} */
2711
3039
  AdStatus: "draft" | "ready" | "archived";
2712
3040
  /** @enum {string} */
@@ -2746,6 +3074,8 @@ interface components {
2746
3074
  /** @enum {string} */
2747
3075
  MentionFieldFormatter: "text" | "currency" | "integer" | "percentage" | "boolean";
2748
3076
  /** @enum {string} */
3077
+ KeywordPolarity: "positive" | "negative";
3078
+ /** @enum {string} */
2749
3079
  PromotionBenefitType: "free_item" | "discount_percentage" | "discount_amount" | "buy_x_get_y";
2750
3080
  /** @enum {string} */
2751
3081
  ReservationPromotionStatus: "applied" | "redeemed" | "expired";
@@ -2756,6 +3086,8 @@ interface components {
2756
3086
  /** @enum {string} */
2757
3087
  VenueEmailSenderStatus: "pending" | "verified" | "failed" | "temporary_failure";
2758
3088
  /** @enum {string} */
3089
+ WebsitePageOwnerType: "venue" | "menu" | "dish" | "beverage" | "ingredient" | "event" | "ritual";
3090
+ /** @enum {string} */
2759
3091
  VenueAssetType: "logomark" | "wordmark" | "combinationmark_horizontal" | "combinationmark_vertical";
2760
3092
  /** @enum {string} */
2761
3093
  VenueUserStatus: "pending" | "confirmed" | "revoked";
@@ -2812,8 +3144,28 @@ type PatchAdResponse = schemas['EditAdResponse'];
2812
3144
  type DeleteAdResponse = schemas['DeleteAdResponse'];
2813
3145
  type EditMetaAdRequest = schemas['EditMetaAdRequest'];
2814
3146
  type EditMetaAdResponse = schemas['EditMetaAdResponse'];
3147
+ type SaveAdCalloutsRequest = schemas['SaveAdCalloutsRequest'];
3148
+ type SaveAdCalloutsResponse = schemas['SaveAdCalloutsResponse'];
2815
3149
  type SaveAdKeywordsRequest = schemas['SaveAdKeywordsRequest'];
2816
3150
  type SaveAdKeywordsResponse = schemas['SaveAdKeywordsResponse'];
3151
+ type SaveAdNegativeKeywordsRequest = schemas['SaveAdNegativeKeywordsRequest'];
3152
+ type SaveAdNegativeKeywordsResponse = schemas['SaveAdNegativeKeywordsResponse'];
3153
+ type SaveAdWebsitePagesRequest = schemas['SaveAdWebsitePagesRequest'];
3154
+ type SaveAdWebsitePagesResponse = schemas['SaveAdWebsitePagesResponse'];
3155
+ type SetAdBudgetRequest = schemas['SetAdBudgetRequest'];
3156
+ type SetAdBudgetResponse = schemas['SetAdBudgetResponse'];
3157
+ type GetCalloutsResponse = schemas['GetCalloutsResponse'];
3158
+ type CreateCalloutRequest = schemas['CreateCalloutRequest'];
3159
+ type CreateCalloutResponse = schemas['CreateCalloutResponse'];
3160
+ type UpdateCalloutRequest = schemas['UpdateCalloutRequest'];
3161
+ type UpdateCalloutResponse = schemas['UpdateCalloutResponse'];
3162
+ type DeleteCalloutResponse = schemas['DeleteCalloutResponse'];
3163
+ type GetWebsitePagesResponse = schemas['GetWebsitePagesResponse'];
3164
+ type CreateWebsitePageRequest = schemas['CreateWebsitePageRequest'];
3165
+ type CreateWebsitePageResponse = schemas['CreateWebsitePageResponse'];
3166
+ type UpdateWebsitePageRequest = schemas['UpdateWebsitePageRequest'];
3167
+ type UpdateWebsitePageResponse = schemas['UpdateWebsitePageResponse'];
3168
+ type DeleteWebsitePageResponse = schemas['DeleteWebsitePageResponse'];
2817
3169
  /**
2818
3170
  * Optional filters for `client.ads.list()`. Each narrows the venue's ad
2819
3171
  * set; omit all to list every ad. Client ergonomics, mapped to the wire
@@ -3241,6 +3593,40 @@ declare class AdsResource extends BaseResource {
3241
3593
  * cleaned, persisted sets.
3242
3594
  */
3243
3595
  saveKeywords(adId: string, body: SaveAdKeywordsRequest): Promise<SaveAdKeywordsResponse>;
3596
+ /**
3597
+ * Replace the ad's owner-chosen callout set in one shot — the highlights
3598
+ * pushed to Google as CALLOUT assets. The set references the venue's callout
3599
+ * pool by id; it is de-duplicated while preserving order, and an empty array
3600
+ * clears callouts. Only ids belonging to the venue's pool survive. Call
3601
+ * {@link get} first and resend the full set to preserve existing entries.
3602
+ * Returns the cleaned, persisted ids.
3603
+ */
3604
+ saveCallouts(adId: string, body: SaveAdCalloutsRequest): Promise<SaveAdCalloutsResponse>;
3605
+ /**
3606
+ * Replace the ad's owner-curated NEGATIVE keyword set (and the venue
3607
+ * negatives toggled off for this ad) in one shot. An empty `negativeKeywords`
3608
+ * array clears the set. Texts are trimmed + de-duplicated server-side; the
3609
+ * set is pushed to a linked live campaign immediately. Call {@link get} first
3610
+ * and resend the full set to preserve existing entries.
3611
+ */
3612
+ saveNegativeKeywords(adId: string, body: SaveAdNegativeKeywordsRequest): Promise<SaveAdNegativeKeywordsResponse>;
3613
+ /**
3614
+ * Replace the ad's owner-chosen website-page set in one shot — the pages
3615
+ * pushed to Google as SITELINK assets. The set references the venue's
3616
+ * website-page pool by id; it is de-duplicated while preserving order, and
3617
+ * an empty array clears sitelinks. Only ids belonging to the venue's pool
3618
+ * survive. Call {@link get} first and resend the full set to preserve
3619
+ * existing entries. Returns the cleaned, persisted ids.
3620
+ */
3621
+ saveWebsitePages(adId: string, body: SaveAdWebsitePagesRequest): Promise<SaveAdWebsitePagesResponse>;
3622
+ /**
3623
+ * Persist the ad's order3000-side daily budget, in CENTS (the app-wide money
3624
+ * unit). This writes `ads.dailyBudget` and pushes NOTHING to Google — it lets
3625
+ * the owner set + refine a budget on a DRAFT ad before any campaign exists;
3626
+ * `createCampaign` reads it as the default at launch (converting cents→micros
3627
+ * at the Google boundary). Returns the updated ad row.
3628
+ */
3629
+ setBudget(adId: string, body: SetAdBudgetRequest): Promise<SetAdBudgetResponse>;
3244
3630
  /**
3245
3631
  * Write paste-ready Meta (Facebook/Instagram) ad copy + creative onto the
3246
3632
  * ad's `metaContent` document — the Meta analog of {@link patch} (which writes
@@ -3330,6 +3716,32 @@ declare class ArticlesResource extends BaseResource {
3330
3716
  patchFeatureImage(idOrAccessor: string, body: PatchFeatureImageRequest): Promise<FeatureImage>;
3331
3717
  }
3332
3718
 
3719
+ /** Result of a venue-scoped asset delete (mirrors the action's response). */
3720
+ interface DeleteAssetResponse {
3721
+ success: boolean;
3722
+ /** Whether the file + row were removed (vs. just unlinked at one entity). */
3723
+ deleted: boolean;
3724
+ }
3725
+ /**
3726
+ * Editable fields on a venue asset (mirrors the `editAsset` action's input,
3727
+ * minus the path-supplied id + tenant accessor). All optional — only the
3728
+ * supplied fields are written. `caption` / `alt` are per-locale records (a flat
3729
+ * string or a TipTap doc per locale); the action normalises strings to TipTap.
3730
+ */
3731
+ interface UpdateAssetInput {
3732
+ tags?: string[];
3733
+ caption?: Record<string, string | Record<string, unknown>>;
3734
+ alt?: Record<string, string | Record<string, unknown>>;
3735
+ isActive?: boolean;
3736
+ cropArea?: {
3737
+ x: number;
3738
+ y: number;
3739
+ width: number;
3740
+ height: number;
3741
+ };
3742
+ }
3743
+ /** The updated asset row (`editAsset`'s response — the central `assets` row). */
3744
+ type UpdateAssetResponse = Asset;
3333
3745
  declare class AssetsResource extends BaseResource {
3334
3746
  constructor(tokenManager: TokenManager, baseUrl: string);
3335
3747
  /**
@@ -3344,6 +3756,36 @@ declare class AssetsResource extends BaseResource {
3344
3756
  * @returns Array of assets with public URLs
3345
3757
  */
3346
3758
  list(options: ListAssetsOptions): Promise<ListAssetsResponse>;
3759
+ /**
3760
+ * Permanently remove a venue asset by id — the storage object, the `assets`
3761
+ * row, and every junction link (an `everywhere` delete). The venue-wide
3762
+ * counterpart to deleting an asset from a single entity.
3763
+ *
3764
+ * Proxies the dual-mode `deleteAsset` server action via
3765
+ * `DELETE /venues/{venueId}/assets/{assetId}`. The action also publishes
3766
+ * `order3000.assets.updated`, so every open asset library for the venue
3767
+ * updates live.
3768
+ *
3769
+ * @param assetId - The globally-unique asset id
3770
+ * @returns `{ success, deleted }`
3771
+ */
3772
+ delete(assetId: string): Promise<DeleteAssetResponse>;
3773
+ /**
3774
+ * Edit a venue asset's metadata (tags / caption / alt / active flag / crop)
3775
+ * by id. Only the supplied fields are written; per-locale `caption` / `alt`
3776
+ * merge into the existing record rather than overwriting it.
3777
+ *
3778
+ * Proxies the dual-mode `editAsset` server action via
3779
+ * `PATCH /venues/{venueId}/assets/{assetId}`. The action also publishes
3780
+ * `order3000.assets.updated`, so every open asset library for the venue
3781
+ * updates live — the grid refetches and any open EditAssetModal showing this
3782
+ * asset re-seeds to reflect the edit.
3783
+ *
3784
+ * @param assetId - The globally-unique asset id
3785
+ * @param input - The fields to change
3786
+ * @returns The updated asset row
3787
+ */
3788
+ update(assetId: string, input: UpdateAssetInput): Promise<UpdateAssetResponse>;
3347
3789
  }
3348
3790
 
3349
3791
  declare class BasketsResource extends BaseResource {
@@ -3417,6 +3859,36 @@ declare class BasketsResource extends BaseResource {
3417
3859
  }>;
3418
3860
  }
3419
3861
 
3862
+ /**
3863
+ * The venue's callout pool — the localized "highlight" phrases (≤25 chars per
3864
+ * locale, Google's CalloutAsset limit) an ad references by id and that publish
3865
+ * to Google as CALLOUT assets on campaign create. This resource manages the
3866
+ * POOL itself; an ad's pick from it is `client.ads.saveCallouts(...)`.
3867
+ */
3868
+ declare class CalloutsResource extends BaseResource {
3869
+ constructor(tokenManager: TokenManager, baseUrl: string);
3870
+ /**
3871
+ * List the venue's whole callout pool, ordered by `createdAt`.
3872
+ */
3873
+ list(): Promise<GetCalloutsResponse>;
3874
+ /**
3875
+ * Add a callout to the venue pool. `label` is the localized text (`{ de,
3876
+ * en }`); each locale value ≤25 chars and at least one must be non-empty.
3877
+ * Returns the created callout row.
3878
+ */
3879
+ create(body: CreateCalloutRequest): Promise<CreateCalloutResponse>;
3880
+ /**
3881
+ * Replace a pool callout's localized `label` (each locale value ≤25 chars;
3882
+ * at least one non-empty). Returns the updated callout row.
3883
+ */
3884
+ update(calloutId: string, body: UpdateCalloutRequest): Promise<UpdateCalloutResponse>;
3885
+ /**
3886
+ * Permanently remove a callout from the venue pool. Returns the deleted row.
3887
+ * (Ads still referencing the id simply drop it on their next save.)
3888
+ */
3889
+ delete(calloutId: string): Promise<DeleteCalloutResponse>;
3890
+ }
3891
+
3420
3892
  /** Element type of an expanded event's `assets[]` array. */
3421
3893
  type EventAssetEntry = NonNullable<EventByAccessor['assets']>[number];
3422
3894
  declare class EventsResource extends BaseResource {
@@ -4142,6 +4614,37 @@ declare class VenuesResource {
4142
4614
  get(idOrAccessor: string): Promise<Venue>;
4143
4615
  }
4144
4616
 
4617
+ /**
4618
+ * The venue's website-page pool — link targets (a localized `label` plus an
4619
+ * internal `path` or `externalUrl`) an ad references by id and that publish to
4620
+ * Google as SITELINK assets on campaign create. This resource manages the POOL
4621
+ * itself; an ad's pick from it is `client.ads.saveWebsitePages(...)`.
4622
+ */
4623
+ declare class WebsitePagesResource extends BaseResource {
4624
+ constructor(tokenManager: TokenManager, baseUrl: string);
4625
+ /**
4626
+ * List the venue's whole website-page pool, ordered by `createdAt`.
4627
+ */
4628
+ list(): Promise<GetWebsitePagesResponse>;
4629
+ /**
4630
+ * Add a website page to the venue pool. `target` is the raw reference the
4631
+ * owner typed — an internal path (`/speisekarte`) or a full URL — classified
4632
+ * server-side against the venue website. `label` is the localized link text.
4633
+ * Returns the created page row.
4634
+ */
4635
+ create(body: CreateWebsitePageRequest): Promise<CreateWebsitePageResponse>;
4636
+ /**
4637
+ * Replace a pool page's `target` (re-classified into a path or external URL)
4638
+ * and/or localized `label`. Returns the updated page row.
4639
+ */
4640
+ update(pageId: string, body: UpdateWebsitePageRequest): Promise<UpdateWebsitePageResponse>;
4641
+ /**
4642
+ * Permanently remove a website page from the venue pool. Returns the deleted
4643
+ * row. (Ads still referencing the id simply drop it on their next save.)
4644
+ */
4645
+ delete(pageId: string): Promise<DeleteWebsitePageResponse>;
4646
+ }
4647
+
4145
4648
  type RealtimeEvent = 'INSERT' | 'UPDATE' | 'DELETE' | '*';
4146
4649
  type RealtimeRow = {
4147
4650
  [key: string]: any;
@@ -4352,6 +4855,7 @@ declare class O3KClient {
4352
4855
  articles: ArticlesResource;
4353
4856
  assets: AssetsResource;
4354
4857
  baskets: BasketsResource;
4858
+ callouts: CalloutsResource;
4355
4859
  events: EventsResource;
4356
4860
  menus: MenusResource;
4357
4861
  orders: OrdersResource;
@@ -4361,6 +4865,7 @@ declare class O3KClient {
4361
4865
  subscriptions: SubscriptionsResource;
4362
4866
  teamOrders: TeamOrdersResource;
4363
4867
  venues: VenuesResource;
4868
+ websitePages: WebsitePagesResource;
4364
4869
  realtime: RealtimeManager;
4365
4870
  private readonly baseUrl;
4366
4871
  private readonly tokenManager;