order3000 1.0.2 → 1.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/dist/client.d.cts CHANGED
@@ -63,6 +63,127 @@ declare abstract class BaseResource {
63
63
 
64
64
  interface components {
65
65
  schemas: {
66
+ /** FetchAdsResponse */
67
+ FetchAdsResponse: {
68
+ id: string;
69
+ venueId: string;
70
+ ownerEntityType: components["schemas"]["AdOwnerType"];
71
+ ownerEntityId: string;
72
+ channel: components["schemas"]["AdChannel"];
73
+ status: components["schemas"]["AdStatus"];
74
+ content: (string | number | boolean | (null)) | {
75
+ [key: string]: unknown;
76
+ } | unknown[];
77
+ createdBy: string | null;
78
+ updatedBy: string | null;
79
+ createdAt: unknown;
80
+ updatedAt: unknown;
81
+ }[];
82
+ /** FetchAdResponse */
83
+ FetchAdResponse: {
84
+ id: string;
85
+ venueId: string;
86
+ ownerEntityType: components["schemas"]["AdOwnerType"];
87
+ ownerEntityId: string;
88
+ channel: components["schemas"]["AdChannel"];
89
+ status: components["schemas"]["AdStatus"];
90
+ content: (string | number | boolean | (null)) | {
91
+ [key: string]: unknown;
92
+ } | unknown[];
93
+ createdBy: string | null;
94
+ updatedBy: string | null;
95
+ createdAt: unknown;
96
+ updatedAt: unknown;
97
+ };
98
+ /**
99
+ * CreateAdRequest
100
+ * @description Request payload for creating a new ad
101
+ */
102
+ CreateAdRequest: {
103
+ venueAccessor: string;
104
+ ownerEntityType: components["schemas"]["AdOwnerType"];
105
+ ownerEntityId: string;
106
+ channel: components["schemas"]["AdChannel"];
107
+ };
108
+ /**
109
+ * CreateAdResponse
110
+ * @description Successfully created ad
111
+ */
112
+ CreateAdResponse: {
113
+ id: string;
114
+ venueId: string;
115
+ ownerEntityType: components["schemas"]["AdOwnerType"];
116
+ ownerEntityId: string;
117
+ channel: components["schemas"]["AdChannel"];
118
+ status: components["schemas"]["AdStatus"];
119
+ content: (string | number | boolean | (null)) | {
120
+ [key: string]: unknown;
121
+ } | unknown[];
122
+ createdBy: string | null;
123
+ updatedBy: string | null;
124
+ createdAt: unknown;
125
+ updatedAt: unknown;
126
+ };
127
+ /**
128
+ * EditAdRequest
129
+ * @description Partial-update body for an existing ad
130
+ */
131
+ EditAdRequest: {
132
+ venueAccessor: string;
133
+ id: string;
134
+ content?: {
135
+ businessName: {
136
+ [key: string]: string;
137
+ };
138
+ headlines: {
139
+ [key: string]: string[];
140
+ };
141
+ descriptions: {
142
+ [key: string]: string[];
143
+ };
144
+ paths: {
145
+ [key: string]: string[];
146
+ };
147
+ /** Format: uri */
148
+ finalUrl: string;
149
+ };
150
+ status?: components["schemas"]["AdStatus"];
151
+ };
152
+ /**
153
+ * EditAdResponse
154
+ * @description Successfully updated ad
155
+ */
156
+ EditAdResponse: {
157
+ id: string;
158
+ venueId: string;
159
+ ownerEntityType: components["schemas"]["AdOwnerType"];
160
+ ownerEntityId: string;
161
+ channel: components["schemas"]["AdChannel"];
162
+ status: components["schemas"]["AdStatus"];
163
+ content: (string | number | boolean | (null)) | {
164
+ [key: string]: unknown;
165
+ } | unknown[];
166
+ createdBy: string | null;
167
+ updatedBy: string | null;
168
+ createdAt: unknown;
169
+ updatedAt: unknown;
170
+ };
171
+ /** DeleteAdResponse */
172
+ DeleteAdResponse: {
173
+ id: string;
174
+ venueId: string;
175
+ ownerEntityType: components["schemas"]["AdOwnerType"];
176
+ ownerEntityId: string;
177
+ channel: components["schemas"]["AdChannel"];
178
+ status: components["schemas"]["AdStatus"];
179
+ content: (string | number | boolean | (null)) | {
180
+ [key: string]: unknown;
181
+ } | unknown[];
182
+ createdBy: string | null;
183
+ updatedBy: string | null;
184
+ createdAt: unknown;
185
+ updatedAt: unknown;
186
+ };
66
187
  /**
67
188
  * Area
68
189
  * @description A bookable + public area for a venue. Assets are only included when the request expands them. Operational flags (`isActive`, `isPublic`, `isBookable`) and audit columns are only populated for authenticated venue staff.
@@ -441,6 +562,42 @@ interface components {
441
562
  [key: string]: unknown;
442
563
  };
443
564
  };
565
+ /** FetchAssetsByTagResponse */
566
+ FetchAssetsByTagResponse: {
567
+ id: string;
568
+ type: components["schemas"]["AssetType"];
569
+ metadata: {
570
+ width?: number;
571
+ height?: number;
572
+ duration?: number;
573
+ } | null;
574
+ isActive: boolean;
575
+ sortIndex: string | null;
576
+ updatedAt: unknown;
577
+ updatedBy: string | null;
578
+ createdAt: unknown;
579
+ createdBy: string | null;
580
+ venueId: string | null;
581
+ tags: string[] | null;
582
+ bucket: string;
583
+ storagePath: string;
584
+ filename: string;
585
+ contentType: string;
586
+ sizeBytes: number;
587
+ caption: {
588
+ [key: string]: unknown;
589
+ };
590
+ alt: {
591
+ [key: string]: unknown;
592
+ };
593
+ cropArea: {
594
+ x: number;
595
+ y: number;
596
+ width: number;
597
+ height: number;
598
+ } | null;
599
+ publicUrl: string;
600
+ }[];
444
601
  /** BasketTotals */
445
602
  BasketTotals: {
446
603
  currency: components["schemas"]["Currency"];
@@ -598,6 +755,8 @@ interface components {
598
755
  } | null;
599
756
  scheduleId: string | null;
600
757
  ritualId: string | null;
758
+ occurrenceDate: string | null;
759
+ ritualType: components["schemas"]["RitualType"];
601
760
  maxBookings: number | null;
602
761
  maxGuests: number | null;
603
762
  minPartySize: number | null;
@@ -688,7 +847,7 @@ interface components {
688
847
  }[];
689
848
  } | null;
690
849
  nextOccurrence: string | null;
691
- posters: {
850
+ assets: {
692
851
  id: string;
693
852
  type: components["schemas"]["AssetType"];
694
853
  metadata: {
@@ -839,7 +998,7 @@ interface components {
839
998
  };
840
999
  category: string;
841
1000
  }[];
842
- posters?: {
1001
+ assets?: {
843
1002
  id: string;
844
1003
  bucket: string;
845
1004
  storagePath: string;
@@ -863,12 +1022,12 @@ interface components {
863
1022
  [key: string]: unknown;
864
1023
  } | unknown[]) | null;
865
1024
  scheduleId?: string | null;
1025
+ occurrenceDate?: string | null;
866
1026
  maxBookings?: number | null;
867
1027
  maxGuests?: number | null;
868
1028
  minPartySize?: number | null;
869
1029
  maxPartySize?: number | null;
870
1030
  isPublic?: boolean;
871
- isRecurring?: boolean;
872
1031
  reservationsEnabled?: boolean;
873
1032
  bookingOpensAtDays?: number | null;
874
1033
  bookingClosesAtOffset?: number | null;
@@ -908,12 +1067,12 @@ interface components {
908
1067
  } | unknown[]) | null;
909
1068
  scheduleId: string | null;
910
1069
  ritualId: string | null;
1070
+ occurrenceDate: string | null;
911
1071
  maxBookings: number | null;
912
1072
  maxGuests: number | null;
913
1073
  minPartySize: number | null;
914
1074
  maxPartySize: number | null;
915
1075
  isPublic: boolean;
916
- isRecurring: boolean;
917
1076
  reservationsEnabled: boolean;
918
1077
  bookingOpensAtDays: number | null;
919
1078
  bookingClosesAtOffset: number | null;
@@ -925,6 +1084,189 @@ interface components {
925
1084
  createdAt: unknown;
926
1085
  updatedAt: unknown;
927
1086
  };
1087
+ /**
1088
+ * EditEventRequest
1089
+ * @description Partial-update body for an existing event
1090
+ */
1091
+ EditEventRequest: {
1092
+ accessor?: string | null;
1093
+ name?: (string | number | boolean | (null)) | {
1094
+ [key: string]: unknown;
1095
+ } | unknown[];
1096
+ description?: ((string | number | boolean | (null)) | {
1097
+ [key: string]: unknown;
1098
+ } | unknown[]) | null;
1099
+ scheduleId?: string | null;
1100
+ occurrenceDate?: string | null;
1101
+ maxBookings?: number | null;
1102
+ maxGuests?: number | null;
1103
+ minPartySize?: number | null;
1104
+ maxPartySize?: number | null;
1105
+ isPublic?: boolean;
1106
+ reservationsEnabled?: boolean;
1107
+ bookingOpensAtDays?: number | null;
1108
+ bookingClosesAtOffset?: number | null;
1109
+ isActive?: boolean;
1110
+ isFeatured?: boolean;
1111
+ priority?: number;
1112
+ schedule?: {
1113
+ rrule?: string | null;
1114
+ timezone?: string | null;
1115
+ validFrom?: string | null;
1116
+ validTo?: string | null;
1117
+ timeRanges: {
1118
+ startTime: string;
1119
+ endTime: string;
1120
+ lastSeatingTime?: string | null;
1121
+ }[];
1122
+ slotMode?: components["schemas"]["SlotMode"];
1123
+ intervalDuration?: number | null;
1124
+ duration?: number | null;
1125
+ } | null;
1126
+ ritualAccessor?: string | null;
1127
+ };
1128
+ /**
1129
+ * EditEventResponse
1130
+ * @description Successfully updated event with schedule
1131
+ */
1132
+ EditEventResponse: {
1133
+ id: string;
1134
+ venueId: string;
1135
+ accessor: string | null;
1136
+ name: (string | number | boolean | (null)) | {
1137
+ [key: string]: unknown;
1138
+ } | unknown[];
1139
+ description: ((string | number | boolean | (null)) | {
1140
+ [key: string]: unknown;
1141
+ } | unknown[]) | null;
1142
+ scheduleId: string | null;
1143
+ ritualId: string | null;
1144
+ occurrenceDate: string | null;
1145
+ maxBookings: number | null;
1146
+ maxGuests: number | null;
1147
+ minPartySize: number | null;
1148
+ maxPartySize: number | null;
1149
+ isPublic: boolean;
1150
+ reservationsEnabled: boolean;
1151
+ bookingOpensAtDays: number | null;
1152
+ bookingClosesAtOffset: number | null;
1153
+ isActive: boolean;
1154
+ isFeatured: boolean;
1155
+ priority: number;
1156
+ createdBy: string | null;
1157
+ updatedBy: string | null;
1158
+ createdAt: unknown;
1159
+ updatedAt: unknown;
1160
+ schedule: {
1161
+ id: string;
1162
+ name: (string | number | boolean | (null)) | {
1163
+ [key: string]: unknown;
1164
+ } | unknown[];
1165
+ description: ((string | number | boolean | (null)) | {
1166
+ [key: string]: unknown;
1167
+ } | unknown[]) | null;
1168
+ timezone: string;
1169
+ rrule: string | null;
1170
+ exdates: string[] | null;
1171
+ validFrom: string | null;
1172
+ validTo: string | null;
1173
+ priority: number | null;
1174
+ slotMode: components["schemas"]["SlotMode"];
1175
+ intervalDuration: number | null;
1176
+ duration: number | null;
1177
+ isActive: boolean;
1178
+ sortIndex: string | null;
1179
+ updatedAt: unknown;
1180
+ updatedBy: string | null;
1181
+ createdAt: unknown;
1182
+ createdBy: string | null;
1183
+ scheduleTimeSlots?: {
1184
+ scheduleId: string | null;
1185
+ timeSlotId: string | null;
1186
+ dayOfWeek: components["schemas"]["DayOfWeek"];
1187
+ sortIndex: string | null;
1188
+ timeSlot: {
1189
+ id: string;
1190
+ startTime: string;
1191
+ endTime: string | null;
1192
+ isActive: boolean | null;
1193
+ isSchedulable: boolean | null;
1194
+ sortIndex: string | null;
1195
+ updatedAt: unknown;
1196
+ updatedBy: string | null;
1197
+ createdAt: unknown;
1198
+ createdBy: string | null;
1199
+ } | null;
1200
+ }[];
1201
+ } | null;
1202
+ };
1203
+ /** DeleteEventResponse */
1204
+ DeleteEventResponse: {
1205
+ id: string;
1206
+ venueId: string;
1207
+ accessor: string | null;
1208
+ name: (string | number | boolean | (null)) | {
1209
+ [key: string]: unknown;
1210
+ } | unknown[];
1211
+ description: ((string | number | boolean | (null)) | {
1212
+ [key: string]: unknown;
1213
+ } | unknown[]) | null;
1214
+ scheduleId: string | null;
1215
+ ritualId: string | null;
1216
+ occurrenceDate: string | null;
1217
+ maxBookings: number | null;
1218
+ maxGuests: number | null;
1219
+ minPartySize: number | null;
1220
+ maxPartySize: number | null;
1221
+ isPublic: boolean;
1222
+ reservationsEnabled: boolean;
1223
+ bookingOpensAtDays: number | null;
1224
+ bookingClosesAtOffset: number | null;
1225
+ isActive: boolean;
1226
+ isFeatured: boolean;
1227
+ priority: number;
1228
+ createdBy: string | null;
1229
+ updatedBy: string | null;
1230
+ createdAt: unknown;
1231
+ updatedAt: unknown;
1232
+ };
1233
+ /** UploadAssetResponse */
1234
+ UploadAssetResponse: {
1235
+ asset: {
1236
+ id: string;
1237
+ type: components["schemas"]["AssetType"];
1238
+ tags: string[] | null;
1239
+ bucket: string;
1240
+ storagePath: string;
1241
+ filename: string;
1242
+ contentType: string;
1243
+ sizeBytes: number;
1244
+ caption: (string | number | boolean | (null)) | {
1245
+ [key: string]: unknown;
1246
+ } | unknown[];
1247
+ alt: (string | number | boolean | (null)) | {
1248
+ [key: string]: unknown;
1249
+ } | unknown[];
1250
+ metadata: ((string | number | boolean | (null)) | {
1251
+ [key: string]: unknown;
1252
+ } | unknown[]) | null;
1253
+ cropArea: ((string | number | boolean | (null)) | {
1254
+ [key: string]: unknown;
1255
+ } | unknown[]) | null;
1256
+ isActive: boolean;
1257
+ sortIndex: string | null;
1258
+ createdAt: unknown;
1259
+ updatedAt: unknown;
1260
+ createdBy: string | null;
1261
+ updatedBy: string | null;
1262
+ venueId: string | null;
1263
+ };
1264
+ publicUrl: string | null;
1265
+ };
1266
+ /** DeleteAssetResponse */
1267
+ DeleteAssetResponse: {
1268
+ success: boolean;
1269
+ };
928
1270
  /**
929
1271
  * FetchMenuResponse
930
1272
  * @description Menu details. `assets[]` is always hydrated with public URLs; `items[]` (with nested dish/beverage) is included when `expand=items` is requested. Each dish/beverage always carries its flat, hydrated `assets[]` (public URLs resolved) — the raw junction relations are never surfaced.
@@ -1369,6 +1711,12 @@ interface components {
1369
1711
  specialRequests?: string | null;
1370
1712
  /** @description Preferred seating area or table type (e.g., "window seat", "quiet area", "patio") */
1371
1713
  tablePreference?: string | null;
1714
+ /** @description Google Ads click identifier from the landing URL (auto-tagging). Stored for server-side conversion reporting. */
1715
+ gclid?: string | null;
1716
+ /** @description Google Ads click identifier for app/web (iOS) where `gclid` is unavailable. */
1717
+ gbraid?: string | null;
1718
+ /** @description Google Ads click identifier for web-to-app (iOS) where `gclid` is unavailable. */
1719
+ wbraid?: string | null;
1372
1720
  };
1373
1721
  /**
1374
1722
  * MakeReservationResponse
@@ -1430,6 +1778,9 @@ interface components {
1430
1778
  /** @description Additional cancellation details */
1431
1779
  cancellationNote: string | null;
1432
1780
  source: components["schemas"]["AreaBookingRequestSource"];
1781
+ gclid: string | null;
1782
+ gbraid: string | null;
1783
+ wbraid: string | null;
1433
1784
  /** @description Any special requirements or notes */
1434
1785
  specialRequests: string | null;
1435
1786
  /** @description Preferred seating location */
@@ -1872,7 +2223,7 @@ interface components {
1872
2223
  /** @enum {string} */
1873
2224
  IntegrationNotificationType: "order_created" | "order_cancelled" | "order_completed" | "team_order_created" | "reservation_created" | "reservation_confirmed" | "reservation_cancelled";
1874
2225
  /** @enum {string} */
1875
- IntegrationType: "telegram";
2226
+ IntegrationType: "telegram" | "google_ads";
1876
2227
  /** @enum {string} */
1877
2228
  InventoryAssetStatus: "available" | "in_use" | "maintenance" | "retired";
1878
2229
  /** @enum {string} */
@@ -1906,6 +2257,12 @@ interface components {
1906
2257
  /** @enum {string} */
1907
2258
  Unit: "grams" | "kilograms" | "liters" | "milliliters" | "pieces";
1908
2259
  /** @enum {string} */
2260
+ AdChannel: "google";
2261
+ /** @enum {string} */
2262
+ AdOwnerType: "event";
2263
+ /** @enum {string} */
2264
+ AdStatus: "draft" | "ready" | "archived";
2265
+ /** @enum {string} */
1909
2266
  MentionEntityType: "dish" | "beverage" | "ingredient" | "menu" | "ritual";
1910
2267
  /** @enum {string} */
1911
2268
  MentionKind: "link" | "value";
@@ -1920,6 +2277,10 @@ interface components {
1920
2277
  /** @enum {string} */
1921
2278
  Jurisdiction: "DE" | "CH" | "FR" | "IT";
1922
2279
  /** @enum {string} */
2280
+ EventAssetSource: "inherited" | "manual";
2281
+ /** @enum {string} */
2282
+ RitualType: "service" | "special";
2283
+ /** @enum {string} */
1923
2284
  DayOfWeek: "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday";
1924
2285
  /** @enum {string} */
1925
2286
  SlotMode: "interval" | "duration";
@@ -1960,6 +2321,51 @@ interface components {
1960
2321
  type schemas = components['schemas'];
1961
2322
  type CreateEventRequest = schemas['CreateEventRequest'];
1962
2323
  type CreateEventResponse = schemas['CreateEventResponse'];
2324
+ type PatchEventRequest = schemas['EditEventRequest'];
2325
+ type PatchEventResponse = schemas['EditEventResponse'];
2326
+ type DeleteEventResponse = schemas['DeleteEventResponse'];
2327
+ type UploadEventPosterResponse = schemas['UploadAssetResponse'];
2328
+ /**
2329
+ * Args for `client.events.uploadPoster()`. Mirrors
2330
+ * {@link UploadFeatureImageArgs} — the SDK accepts a `Buffer` /
2331
+ * `Uint8Array` payload + filename + content-type and builds the
2332
+ * multipart FormData internally. Client ergonomics, no wire equivalent.
2333
+ */
2334
+ interface UploadEventPosterArgs {
2335
+ data: Buffer | Uint8Array;
2336
+ filename: string;
2337
+ contentType: string;
2338
+ }
2339
+ /**
2340
+ * A single ad row — generated-bound to the `FetchAdResponse` component
2341
+ * (`createSelectSchema(ads)` server-side). Carries the polymorphic owner
2342
+ * (`ownerEntityType` / `ownerEntityId`), the `channel`, the paste-ready
2343
+ * Google Search Ad `content` document, and the lifecycle `status`.
2344
+ */
2345
+ type Ad = schemas['FetchAdResponse'];
2346
+ /**
2347
+ * The ads list response — generated-bound to `FetchAdsResponse` (an array
2348
+ * of {@link Ad}), ordered by `createdAt`. Never hand-rolled.
2349
+ */
2350
+ type ListAdsResponse = schemas['FetchAdsResponse'];
2351
+ type CreateAdRequest = schemas['CreateAdRequest'];
2352
+ type CreateAdResponse = schemas['CreateAdResponse'];
2353
+ type PatchAdRequest = schemas['EditAdRequest'];
2354
+ type PatchAdResponse = schemas['EditAdResponse'];
2355
+ type DeleteAdResponse = schemas['DeleteAdResponse'];
2356
+ /**
2357
+ * Optional filters for `client.ads.list()`. Each narrows the venue's ad
2358
+ * set; omit all to list every ad. Client ergonomics, mapped to the wire
2359
+ * query string by the resource layer.
2360
+ */
2361
+ interface ListAdsOptions {
2362
+ /** Filter to ads owning this entity type (e.g. `event`). */
2363
+ ownerEntityType?: string;
2364
+ /** Filter to ads owning this specific entity id. */
2365
+ ownerEntityId?: string;
2366
+ /** Filter to ads on this channel (e.g. `google`). */
2367
+ channel?: string;
2368
+ }
1963
2369
  type Article = schemas['FetchArticleResponse'];
1964
2370
  type ListArticlesResponse = schemas['FetchArticlesResponse'];
1965
2371
  type GetArticleResponse = schemas['FetchArticleResponse'];
@@ -2036,10 +2442,11 @@ type ScheduleOverride = schemas['FetchEventsResponse'][number]['scheduleOverride
2036
2442
  */
2037
2443
  type Schedule = NonNullable<schemas['FetchEventsResponse'][number]['schedule']>;
2038
2444
  /**
2039
- * An event poster (image/video/document asset attached to an event).
2040
- * Generated-bound to the events list response's `posters[]` element.
2445
+ * An asset (image/video/document) attached to an event. Generated-bound to the
2446
+ * events list response's `assets[]` element. Use the asset's `tags` (e.g.
2447
+ * `'poster'`) to classify how it's used.
2041
2448
  */
2042
- type EventPoster = schemas['FetchEventsResponse'][number]['posters'][number];
2449
+ type EventAsset = schemas['FetchEventsResponse'][number]['assets'][number];
2043
2450
  /**
2044
2451
  * A promotion attached to an event. Generated-bound to the events list
2045
2452
  * response's `promotions[]` element.
@@ -2071,6 +2478,23 @@ interface ListEventsOptions {
2071
2478
  * (an array of {@link Event}). Never hand-rolled.
2072
2479
  */
2073
2480
  type ListEventsResponse = schemas['FetchEventsResponse'];
2481
+ /**
2482
+ * An asset (image/video/document) as returned by the assets-by-tag endpoint,
2483
+ * with its resolved Supabase `publicUrl`. Generated-bound to
2484
+ * `FetchAssetsByTagResponse`'s element — never hand-rolled.
2485
+ */
2486
+ type Asset = schemas['FetchAssetsByTagResponse'][number];
2487
+ interface ListAssetsOptions {
2488
+ /** Required. Only assets carrying this tag are returned. */
2489
+ tag: string;
2490
+ /** Optional asset-type filter. */
2491
+ type?: 'image' | 'video' | 'document';
2492
+ }
2493
+ /**
2494
+ * The assets-by-tag list response — generated-bound to
2495
+ * `FetchAssetsByTagResponse` (an array of {@link Asset}). Never hand-rolled.
2496
+ */
2497
+ type ListAssetsResponse = schemas['FetchAssetsByTagResponse'];
2074
2498
  /**
2075
2499
  * Menu item discriminant — generated-bound to the `type` enum on the
2076
2500
  * menu response's `items[]` element. The `fetchMenu` output schema is
@@ -2302,6 +2726,40 @@ type SubscribeRequest = schemas['SubscribeToSubscriptionBody'];
2302
2726
  type SubscribeResponse = schemas['SubscribeToSubscriptionResponse'];
2303
2727
  type SubscriptionCredit = schemas['GetSubscriptionCreditsResponse'][number];
2304
2728
 
2729
+ declare class AdsResource extends BaseResource {
2730
+ constructor(tokenManager: TokenManager, baseUrl: string);
2731
+ /**
2732
+ * List the venue's ads, ordered by `createdAt`. Optionally filter by
2733
+ * `ownerEntityType` (e.g. `event`), `ownerEntityId`, or `channel` (e.g.
2734
+ * `google`). Each ad carries its paste-ready Google Search Ad `content`
2735
+ * document and lifecycle `status`.
2736
+ */
2737
+ list(options?: ListAdsOptions): Promise<ListAdsResponse>;
2738
+ /**
2739
+ * Fetch a single ad by id within the active venue. Ads have no accessor
2740
+ * — the lookup is always by uuid. Returns the full row including the
2741
+ * `content` document and `status`.
2742
+ */
2743
+ get(adId: string): Promise<Ad>;
2744
+ /**
2745
+ * Create a new ad for a polymorphic owner entity (an event today). Copy
2746
+ * + status take the DB defaults (empty content, `draft`) and are
2747
+ * populated later via {@link patch}. Returns the created ad.
2748
+ */
2749
+ create(body: CreateAdRequest): Promise<CreateAdResponse>;
2750
+ /**
2751
+ * Partial-update an ad by id. Pass `content` to write paste-ready Google
2752
+ * Responsive Search Ad copy (the char-limit + count validation is the
2753
+ * self-heal contract) and/or `status` to move the ad through its
2754
+ * lifecycle. Returns the resulting ad.
2755
+ */
2756
+ patch(adId: string, body: PatchAdRequest): Promise<PatchAdResponse>;
2757
+ /**
2758
+ * Permanently delete an ad by id. Returns the deleted ad row.
2759
+ */
2760
+ delete(adId: string): Promise<DeleteAdResponse>;
2761
+ }
2762
+
2305
2763
  declare class AreasResource extends BaseResource {
2306
2764
  constructor(tokenManager: TokenManager, baseUrl: string);
2307
2765
  /**
@@ -2374,6 +2832,22 @@ declare class ArticlesResource extends BaseResource {
2374
2832
  patchFeatureImage(idOrAccessor: string, body: PatchFeatureImageRequest): Promise<FeatureImage>;
2375
2833
  }
2376
2834
 
2835
+ declare class AssetsResource extends BaseResource {
2836
+ constructor(tokenManager: TokenManager, baseUrl: string);
2837
+ /**
2838
+ * List a venue's ACTIVE assets carrying `tag`, ordered by `sortIndex`.
2839
+ *
2840
+ * A binding-agnostic query on the central `assets` table — an asset is
2841
+ * returned regardless of whether it is bound to a ritual, dish, beverage,
2842
+ * event, or is standalone. Each asset carries its resolved Supabase
2843
+ * `publicUrl`.
2844
+ *
2845
+ * @param options - `tag` (required) + optional `type` filter
2846
+ * @returns Array of assets with public URLs
2847
+ */
2848
+ list(options: ListAssetsOptions): Promise<ListAssetsResponse>;
2849
+ }
2850
+
2377
2851
  declare class BasketsResource extends BaseResource {
2378
2852
  constructor(tokenManager: TokenManager, baseUrl: string);
2379
2853
  /**
@@ -2445,6 +2919,8 @@ declare class BasketsResource extends BaseResource {
2445
2919
  }>;
2446
2920
  }
2447
2921
 
2922
+ /** Element type of an expanded event's `assets[]` array. */
2923
+ type EventPosterEntry = NonNullable<EventByAccessor['assets']>[number];
2448
2924
  declare class EventsResource extends BaseResource {
2449
2925
  constructor(tokenManager: TokenManager, baseUrl: string);
2450
2926
  /**
@@ -2473,6 +2949,40 @@ declare class EventsResource extends BaseResource {
2473
2949
  */
2474
2950
  getByAccessor(accessor: string, options?: GetEventOptions): Promise<EventByAccessor>;
2475
2951
  private buildQueryString;
2952
+ /**
2953
+ * Partial-update an event by id or accessor. Every body field is
2954
+ * optional; locale-keyed fields (`name`, `description`) merge at the
2955
+ * locale level — `{ name: { en: 'Brunch' } }` updates `en` without
2956
+ * touching `de`. Pass a `schedule` object to update timing, or
2957
+ * `ritualAccessor` to (re)link a ritual (`null` detaches). Returns the
2958
+ * resulting event with its schedule.
2959
+ */
2960
+ patch(idOrAccessor: string, body: PatchEventRequest): Promise<PatchEventResponse>;
2961
+ /**
2962
+ * Permanently delete an event by id or accessor. Returns the deleted
2963
+ * event row.
2964
+ */
2965
+ delete(idOrAccessor: string): Promise<DeleteEventResponse>;
2966
+ /**
2967
+ * List the posters attached to an event. Convenience over
2968
+ * `getByAccessor(idOrAccessor, { expand: ['posters'] })` — returns the
2969
+ * `posters[]` array (empty when the event has none).
2970
+ */
2971
+ listPosters(idOrAccessor: string): Promise<EventPosterEntry[]>;
2972
+ /**
2973
+ * Upload a poster image for an event. The SDK builds the multipart
2974
+ * body internally — pass a Buffer/Uint8Array, the original filename,
2975
+ * and the MIME type. The asset is stored and linked to the event via
2976
+ * `event_assets`; returns the new asset and its public URL.
2977
+ */
2978
+ uploadPoster(idOrAccessor: string, file: UploadEventPosterArgs): Promise<UploadEventPosterResponse>;
2979
+ /**
2980
+ * Remove a poster from an event. Deletes the asset (storage object +
2981
+ * DB row + `event_assets` link). Returns `{ success: true }`.
2982
+ */
2983
+ removePoster(idOrAccessor: string, assetId: string): Promise<{
2984
+ success: boolean;
2985
+ }>;
2476
2986
  }
2477
2987
 
2478
2988
  declare class MenusResource extends BaseResource {
@@ -3329,8 +3839,10 @@ interface O3KClientConfig {
3329
3839
  tokenUrl?: string;
3330
3840
  }
3331
3841
  declare class O3KClient {
3842
+ ads: AdsResource;
3332
3843
  areas: AreasResource;
3333
3844
  articles: ArticlesResource;
3845
+ assets: AssetsResource;
3334
3846
  baskets: BasketsResource;
3335
3847
  events: EventsResource;
3336
3848
  menus: MenusResource;
@@ -3347,4 +3859,4 @@ declare class O3KClient {
3347
3859
  }
3348
3860
 
3349
3861
  export { O3KClient, deliveryAddressSchema as O3KDeliveryAddressSchema, fulfillmentTypeEnum as O3KFulfillmentTypeEnum, getScheduleInfo as O3KGetScheduleInfo, participantStatusEnum as O3KParticipantStatusEnum, paymentMethodEnum as O3KPaymentMethodEnum, teamOrderStatusEnum as O3KTeamOrderStatusEnum };
3350
- export type { AddToBasketRequest as O3KAddToBasketRequest, AddToBasketResponse as O3KAddToBasketResponse, Area as O3KArea, AreaAsset as O3KAreaAsset, AreaAvailabilityResponse as O3KAreaAvailabilityResponse, AreaAvailabilityWindow as O3KAreaAvailabilityWindow, AreaBookingMode as O3KAreaBookingMode, AreaBookingRequestResponse as O3KAreaBookingRequestResponse, AreaBookingRequestSource as O3KAreaBookingRequestSource, AreaBookingRequestStatus as O3KAreaBookingRequestStatus, AreaBookingStatus as O3KAreaBookingStatus, AreaFeature as O3KAreaFeature, Article as O3KArticle, Basket as O3KBasket, BasketItem as O3KBasketItem, BasketItemDeposit as O3KBasketItemDeposit, BasketItemMenuItemRef as O3KBasketItemMenuItemRef, BasketItemMetadata as O3KBasketItemMetadata, BasketStatus as O3KBasketStatus, BasketTotals as O3KBasketTotals, CancelTeamOrderResponse as O3KCancelTeamOrderResponse, O3KClientConfig, ConfirmOrderRequest as O3KConfirmOrderRequest, ConfirmOrderResponse as O3KConfirmOrderResponse, CreateDeltaPaymentIntentRequest as O3KCreateDeltaPaymentIntentRequest, CreateDeltaPaymentIntentResponse as O3KCreateDeltaPaymentIntentResponse, CreatePaymentIntentRequest as O3KCreatePaymentIntentRequest, CreatePaymentIntentResponse as O3KCreatePaymentIntentResponse, CreateTeamOrderRequest as O3KCreateTeamOrderRequest, CreateTeamOrderResponse as O3KCreateTeamOrderResponse, CropArea as O3KCropArea, Currency as O3KCurrency, DayOfWeek as O3KDayOfWeek, DeclaredReturn as O3KDeclaredReturn, DeliveryAddress as O3KDeliveryAddress, Event as O3KEvent, EventByAccessor as O3KEventByAccessor, EventMenu as O3KEventMenu, EventPoster as O3KEventPoster, EventRow as O3KEventRow, ExtendDeadlineResponse as O3KExtendTeamOrderDeadlineResponse, FeatureImage as O3KFeatureImage, FetchTeamOrderResponse as O3KFetchTeamOrderResponse, GetAreaAvailabilityOptions as O3KGetAreaAvailabilityOptions, GetAreaOptions as O3KGetAreaOptions, GetArticleResponse as O3KGetArticleResponse, GetEventOptions as O3KGetEventOptions, GetMenuOptions as O3KGetMenuOptions, GetVenueResponse as O3KGetVenueResponse, JoinTeamOrderRequest as O3KJoinTeamOrderRequest, JoinTeamOrderResponse as O3KJoinTeamOrderResponse, LatestOrder as O3KLatestOrder, ListArticlesOptions as O3KListArticlesOptions, ListArticlesResponse as O3KListArticlesResponse, ListEventsOptions as O3KListEventsOptions, ListEventsResponse as O3KListEventsResponse, Menu as O3KMenu, MenuAsset as O3KMenuAsset, MenuBeverage as O3KMenuBeverage, MenuBundle as O3KMenuBundle, MenuBundleDeposit as O3KMenuBundleDeposit, MenuDish as O3KMenuDish, MenuItem as O3KMenuItem, MenuItemRow as O3KMenuItemRow, MenuItemType as O3KMenuItemType, MenuSubscription as O3KMenuSubscription, MenuSubscriptionPoster as O3KMenuSubscriptionPoster, OrderFulfillmentType as O3KOrderFulfillmentType, OrderStatus as O3KOrderStatus, PatchArticleRequest as O3KPatchArticleRequest, PatchArticleResponse as O3KPatchArticleResponse, PatchFeatureImageRequest as O3KPatchFeatureImageRequest, PaymentStatus as O3KPaymentStatus, PlaceOrderRequest as O3KPlaceOrderRequest, Promotion as O3KPromotion, RealtimeConfig as O3KRealtimeConfig, RealtimeEvent as O3KRealtimeEvent, RealtimeSubscription as O3KRealtimeSubscription, RemoveFromBasketResponse as O3KRemoveFromBasketResponse, Schedule as O3KSchedule, ScheduleInfo as O3KScheduleInfo, ScheduleOverride as O3KScheduleOverride, ScheduleOverrideRow as O3KScheduleOverrideRow, ScheduleRow as O3KScheduleRow, ScheduleTimeSlot as O3KScheduleTimeSlot, ScheduleWithTimeSlots as O3KScheduleWithTimeSlots, SubmitAreaBookingRequestPayload as O3KSubmitAreaBookingRequestPayload, SubmitTeamOrderResponse as O3KSubmitTeamOrderResponse, SubscribeRequest as O3KSubscribeRequest, SubscribeResponse as O3KSubscribeResponse, SubscriberStatus as O3KSubscriberStatus, SubscriptionCredit as O3KSubscriptionCredit, SubscriptionCreditStatus as O3KSubscriptionCreditStatus, SubscriptionOptions as O3KSubscriptionOptions, SubscriptionPeriod as O3KSubscriptionPeriod, SwitchFulfillmentResponse as O3KSwitchTeamOrderFulfillmentResponse, TeamDeliveryAddress as O3KTeamDeliveryAddress, TeamOrderBasketItem as O3KTeamOrderBasketItem, TeamOrderBasketItemMenuItemRef as O3KTeamOrderBasketItemMenuItemRef, FulfillmentType as O3KTeamOrderFulfillmentType, TeamOrderParticipant as O3KTeamOrderParticipant, ParticipantStatus as O3KTeamOrderParticipantStatus, PaymentMethod as O3KTeamOrderPaymentMethod, TeamOrderStatus as O3KTeamOrderStatus, ThresholdCheck as O3KTeamOrderThresholdCheck, TimeSlot as O3KTimeSlot, Unit as O3KUnit, UpdateDeliveryAddressResponse as O3KUpdateTeamOrderDeliveryAddressResponse, UploadFeatureImageArgs as O3KUploadFeatureImageArgs, Venue as O3KVenue };
3862
+ export type { Ad as O3KAd, AddToBasketRequest as O3KAddToBasketRequest, AddToBasketResponse as O3KAddToBasketResponse, Area as O3KArea, AreaAsset as O3KAreaAsset, AreaAvailabilityResponse as O3KAreaAvailabilityResponse, AreaAvailabilityWindow as O3KAreaAvailabilityWindow, AreaBookingMode as O3KAreaBookingMode, AreaBookingRequestResponse as O3KAreaBookingRequestResponse, AreaBookingRequestSource as O3KAreaBookingRequestSource, AreaBookingRequestStatus as O3KAreaBookingRequestStatus, AreaBookingStatus as O3KAreaBookingStatus, AreaFeature as O3KAreaFeature, Article as O3KArticle, Asset as O3KAsset, Basket as O3KBasket, BasketItem as O3KBasketItem, BasketItemDeposit as O3KBasketItemDeposit, BasketItemMenuItemRef as O3KBasketItemMenuItemRef, BasketItemMetadata as O3KBasketItemMetadata, BasketStatus as O3KBasketStatus, BasketTotals as O3KBasketTotals, CancelTeamOrderResponse as O3KCancelTeamOrderResponse, O3KClientConfig, ConfirmOrderRequest as O3KConfirmOrderRequest, ConfirmOrderResponse as O3KConfirmOrderResponse, CreateAdRequest as O3KCreateAdRequest, CreateAdResponse as O3KCreateAdResponse, CreateDeltaPaymentIntentRequest as O3KCreateDeltaPaymentIntentRequest, CreateDeltaPaymentIntentResponse as O3KCreateDeltaPaymentIntentResponse, CreateEventRequest as O3KCreateEventRequest, CreateEventResponse as O3KCreateEventResponse, CreatePaymentIntentRequest as O3KCreatePaymentIntentRequest, CreatePaymentIntentResponse as O3KCreatePaymentIntentResponse, CreateTeamOrderRequest as O3KCreateTeamOrderRequest, CreateTeamOrderResponse as O3KCreateTeamOrderResponse, CropArea as O3KCropArea, Currency as O3KCurrency, DayOfWeek as O3KDayOfWeek, DeclaredReturn as O3KDeclaredReturn, DeleteAdResponse as O3KDeleteAdResponse, DeleteEventResponse as O3KDeleteEventResponse, DeliveryAddress as O3KDeliveryAddress, Event as O3KEvent, EventAsset as O3KEventAsset, EventByAccessor as O3KEventByAccessor, EventMenu as O3KEventMenu, EventRow as O3KEventRow, ExtendDeadlineResponse as O3KExtendTeamOrderDeadlineResponse, FeatureImage as O3KFeatureImage, FetchTeamOrderResponse as O3KFetchTeamOrderResponse, GetAreaAvailabilityOptions as O3KGetAreaAvailabilityOptions, GetAreaOptions as O3KGetAreaOptions, GetArticleResponse as O3KGetArticleResponse, GetEventOptions as O3KGetEventOptions, GetMenuOptions as O3KGetMenuOptions, GetVenueResponse as O3KGetVenueResponse, JoinTeamOrderRequest as O3KJoinTeamOrderRequest, JoinTeamOrderResponse as O3KJoinTeamOrderResponse, LatestOrder as O3KLatestOrder, ListAdsOptions as O3KListAdsOptions, ListAdsResponse as O3KListAdsResponse, ListArticlesOptions as O3KListArticlesOptions, ListArticlesResponse as O3KListArticlesResponse, ListAssetsOptions as O3KListAssetsOptions, ListAssetsResponse as O3KListAssetsResponse, ListEventsOptions as O3KListEventsOptions, ListEventsResponse as O3KListEventsResponse, Menu as O3KMenu, MenuAsset as O3KMenuAsset, MenuBeverage as O3KMenuBeverage, MenuBundle as O3KMenuBundle, MenuBundleDeposit as O3KMenuBundleDeposit, MenuDish as O3KMenuDish, MenuItem as O3KMenuItem, MenuItemRow as O3KMenuItemRow, MenuItemType as O3KMenuItemType, MenuSubscription as O3KMenuSubscription, MenuSubscriptionPoster as O3KMenuSubscriptionPoster, OrderFulfillmentType as O3KOrderFulfillmentType, OrderStatus as O3KOrderStatus, PatchAdRequest as O3KPatchAdRequest, PatchAdResponse as O3KPatchAdResponse, PatchArticleRequest as O3KPatchArticleRequest, PatchArticleResponse as O3KPatchArticleResponse, PatchEventRequest as O3KPatchEventRequest, PatchEventResponse as O3KPatchEventResponse, PatchFeatureImageRequest as O3KPatchFeatureImageRequest, PaymentStatus as O3KPaymentStatus, PlaceOrderRequest as O3KPlaceOrderRequest, Promotion as O3KPromotion, RealtimeConfig as O3KRealtimeConfig, RealtimeEvent as O3KRealtimeEvent, RealtimeSubscription as O3KRealtimeSubscription, RemoveFromBasketResponse as O3KRemoveFromBasketResponse, Schedule as O3KSchedule, ScheduleInfo as O3KScheduleInfo, ScheduleOverride as O3KScheduleOverride, ScheduleOverrideRow as O3KScheduleOverrideRow, ScheduleRow as O3KScheduleRow, ScheduleTimeSlot as O3KScheduleTimeSlot, ScheduleWithTimeSlots as O3KScheduleWithTimeSlots, SubmitAreaBookingRequestPayload as O3KSubmitAreaBookingRequestPayload, SubmitTeamOrderResponse as O3KSubmitTeamOrderResponse, SubscribeRequest as O3KSubscribeRequest, SubscribeResponse as O3KSubscribeResponse, SubscriberStatus as O3KSubscriberStatus, SubscriptionCredit as O3KSubscriptionCredit, SubscriptionCreditStatus as O3KSubscriptionCreditStatus, SubscriptionOptions as O3KSubscriptionOptions, SubscriptionPeriod as O3KSubscriptionPeriod, SwitchFulfillmentResponse as O3KSwitchTeamOrderFulfillmentResponse, TeamDeliveryAddress as O3KTeamDeliveryAddress, TeamOrderBasketItem as O3KTeamOrderBasketItem, TeamOrderBasketItemMenuItemRef as O3KTeamOrderBasketItemMenuItemRef, FulfillmentType as O3KTeamOrderFulfillmentType, TeamOrderParticipant as O3KTeamOrderParticipant, ParticipantStatus as O3KTeamOrderParticipantStatus, PaymentMethod as O3KTeamOrderPaymentMethod, TeamOrderStatus as O3KTeamOrderStatus, ThresholdCheck as O3KTeamOrderThresholdCheck, TimeSlot as O3KTimeSlot, Unit as O3KUnit, UpdateDeliveryAddressResponse as O3KUpdateTeamOrderDeliveryAddressResponse, UploadEventPosterArgs as O3KUploadEventPosterArgs, UploadEventPosterResponse as O3KUploadEventPosterResponse, UploadFeatureImageArgs as O3KUploadFeatureImageArgs, Venue as O3KVenue };