@seatlayer/js 0.47.2 → 0.48.1
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/README.md +16 -1
- package/dist/{channelsMode-33ZLORVF.js → channelsMode-NCH5GYHN.js} +3 -3
- package/dist/{chunk-X2R4AQSZ.js → chunk-H4OJF6LE.js} +176 -7
- package/dist/chunk-H4OJF6LE.js.map +1 -0
- package/dist/{chunk-DMEFXZIL.js → chunk-KNMZQZXR.js} +2 -2
- package/dist/{chunk-CF5MS7UR.js → chunk-Q5QT3YLA.js} +186 -59
- package/dist/chunk-Q5QT3YLA.js.map +1 -0
- package/dist/{hostedCheckout-SHQCWN5Y.js → hostedCheckout-F6C6VCCG.js} +1 -1
- package/dist/hostedCheckout-F6C6VCCG.js.map +1 -0
- package/dist/index.cjs +612 -120
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +37 -5
- package/dist/index.d.ts +37 -5
- package/dist/index.js +258 -62
- package/dist/index.js.map +1 -1
- package/dist/{manager-CAIPkUYl.d.cts → manager-DEjbKiqJ.d.cts} +200 -17
- package/dist/{manager-CAIPkUYl.d.ts → manager-DEjbKiqJ.d.ts} +200 -17
- package/dist/manager.cjs +358 -62
- package/dist/manager.cjs.map +1 -1
- package/dist/manager.d.cts +1 -1
- package/dist/manager.d.ts +1 -1
- package/dist/manager.js +2 -2
- package/package.json +2 -2
- package/dist/chunk-CF5MS7UR.js.map +0 -1
- package/dist/chunk-X2R4AQSZ.js.map +0 -1
- package/dist/hostedCheckout-SHQCWN5Y.js.map +0 -1
- /package/dist/{channelsMode-33ZLORVF.js.map → channelsMode-NCH5GYHN.js.map} +0 -0
- /package/dist/{chunk-DMEFXZIL.js.map → chunk-KNMZQZXR.js.map} +0 -0
|
@@ -401,8 +401,9 @@ declare function stateBadge(state: ChannelState | 'builtin'): string;
|
|
|
401
401
|
* cookie-CSRF gate, so no extra client header is needed.
|
|
402
402
|
* - `credentials: 'omit'` — there is no session cookie; the CMS runs
|
|
403
403
|
* cross-origin. The worker's credentialed CORS still echoes the CMS origin.
|
|
404
|
-
* -
|
|
405
|
-
*
|
|
404
|
+
* - chart geometry and authored media use authenticated organizer Event
|
|
405
|
+
* routes. A manage bearer is not buyer authority and is never sent to
|
|
406
|
+
* `/pub`. The seat STATE reads are private too. `/pub/.../objects` and an unticketed
|
|
406
407
|
* `/pub/.../subscribe` both answer with the BUYER projection, which shows
|
|
407
408
|
* inventory the caller may not buy as a neutral `blocked` — so an organizer
|
|
408
409
|
* reading them sees its own channel allocations as blocked seats. Both now
|
|
@@ -506,7 +507,9 @@ interface ReportCategoryRow {
|
|
|
506
507
|
held: number;
|
|
507
508
|
booked: number;
|
|
508
509
|
not_for_sale: number;
|
|
509
|
-
/**
|
|
510
|
+
/** Configured-price snapshots for booked inventory; not proof of payment. */
|
|
511
|
+
bookedValue: number;
|
|
512
|
+
/** @deprecated Use `bookedValue`. */
|
|
510
513
|
bookedRevenue: number;
|
|
511
514
|
}
|
|
512
515
|
interface ReportCategoryMeta {
|
|
@@ -538,6 +541,8 @@ interface ControlRoomSectionMetric {
|
|
|
538
541
|
held: number;
|
|
539
542
|
booked: number;
|
|
540
543
|
not_for_sale: number;
|
|
544
|
+
bookedValue: number;
|
|
545
|
+
/** @deprecated Use `bookedValue`. */
|
|
541
546
|
bookedRevenue: number;
|
|
542
547
|
}
|
|
543
548
|
/** Recent seat-state change safe for an event:view control-room grant. Full
|
|
@@ -557,6 +562,12 @@ interface ControlRoomSnapshot {
|
|
|
557
562
|
booked: number;
|
|
558
563
|
blocked: number;
|
|
559
564
|
};
|
|
565
|
+
/** Configured value attached to booked inventory, never payment revenue. */
|
|
566
|
+
bookedValue: {
|
|
567
|
+
gross: number;
|
|
568
|
+
bySection: ControlRoomSectionMetric[];
|
|
569
|
+
};
|
|
570
|
+
/** @deprecated Use `bookedValue`. */
|
|
560
571
|
revenue: {
|
|
561
572
|
gross: number;
|
|
562
573
|
bySection: ControlRoomSectionMetric[];
|
|
@@ -566,6 +577,8 @@ interface ControlRoomSnapshot {
|
|
|
566
577
|
bySection: Array<{
|
|
567
578
|
sectionId: string;
|
|
568
579
|
netBooked: number;
|
|
580
|
+
bookedValue: number;
|
|
581
|
+
/** @deprecated Use `bookedValue`. */
|
|
569
582
|
grossRevenue: number;
|
|
570
583
|
previousNetBooked: number;
|
|
571
584
|
trend: 'rising' | 'steady' | 'cooling';
|
|
@@ -595,6 +608,145 @@ interface LogPage {
|
|
|
595
608
|
entries: LogEntry[];
|
|
596
609
|
nextBefore: number | null;
|
|
597
610
|
}
|
|
611
|
+
/** Platform/SDK inventory history — deliberately unrelated to commerce Orders. */
|
|
612
|
+
type InventoryBookingState = 'booked' | 'partially_cancelled' | 'cancelled';
|
|
613
|
+
interface InventoryBookingObject {
|
|
614
|
+
label: string;
|
|
615
|
+
objectId: string;
|
|
616
|
+
objectType: 'seat' | 'booth' | 'ga' | 'table';
|
|
617
|
+
categoryKey: string;
|
|
618
|
+
sectionId: string | null;
|
|
619
|
+
sectionLabel: string | null;
|
|
620
|
+
zoneId: string | null;
|
|
621
|
+
tierId: string | null;
|
|
622
|
+
releaseId: string | null;
|
|
623
|
+
bookingMode: 'individual' | 'whole' | 'variable';
|
|
624
|
+
quantity: number;
|
|
625
|
+
/** Event-configured price snapshot; not proof of what a buyer paid. */
|
|
626
|
+
unitPrice: number;
|
|
627
|
+
configuredValue: number;
|
|
628
|
+
currency: string;
|
|
629
|
+
channelId: string | null;
|
|
630
|
+
channelExternalRef: string | null;
|
|
631
|
+
source: string;
|
|
632
|
+
state: 'booked' | 'cancelled';
|
|
633
|
+
bookedAt: number;
|
|
634
|
+
cancelledAt: number | null;
|
|
635
|
+
}
|
|
636
|
+
interface InventoryBooking {
|
|
637
|
+
eventKey: string;
|
|
638
|
+
eventMode: 'live' | 'test';
|
|
639
|
+
bookingRef: string;
|
|
640
|
+
state: InventoryBookingState;
|
|
641
|
+
bookedAt: number;
|
|
642
|
+
updatedAt: number;
|
|
643
|
+
cancelledAt: number | null;
|
|
644
|
+
source: string;
|
|
645
|
+
bookedBy: string | null;
|
|
646
|
+
lastActor: string | null;
|
|
647
|
+
lastSource: string;
|
|
648
|
+
labels: string[];
|
|
649
|
+
objects: InventoryBookingObject[];
|
|
650
|
+
quantity: number;
|
|
651
|
+
activeQuantity: number;
|
|
652
|
+
configuredValue: number;
|
|
653
|
+
activeConfiguredValue: number;
|
|
654
|
+
currency: string | null;
|
|
655
|
+
}
|
|
656
|
+
interface InventoryBookingsQuery {
|
|
657
|
+
q?: string;
|
|
658
|
+
state?: InventoryBookingState | null;
|
|
659
|
+
cursor?: string | null;
|
|
660
|
+
limit?: number;
|
|
661
|
+
}
|
|
662
|
+
interface InventoryBookingsPage {
|
|
663
|
+
bookings: InventoryBooking[];
|
|
664
|
+
nextCursor: string | null;
|
|
665
|
+
}
|
|
666
|
+
interface InventoryBookingActivity {
|
|
667
|
+
id: number;
|
|
668
|
+
action: 'book' | 'replay' | 'partial_cancel' | 'cancel' | 'reconcile';
|
|
669
|
+
at: number;
|
|
670
|
+
labels: string[];
|
|
671
|
+
actor: string | null;
|
|
672
|
+
source: string;
|
|
673
|
+
}
|
|
674
|
+
interface InventoryBookingDetail {
|
|
675
|
+
booking: InventoryBooking;
|
|
676
|
+
activity: InventoryBookingActivity[];
|
|
677
|
+
activityTruncated: boolean;
|
|
678
|
+
}
|
|
679
|
+
/** Booking-time facts attached to the channel that produced the inventory move. */
|
|
680
|
+
interface ChannelAttribution {
|
|
681
|
+
sold: number;
|
|
682
|
+
units: number;
|
|
683
|
+
bookedValue: number | null;
|
|
684
|
+
/** @deprecated Use `bookedValue`. */
|
|
685
|
+
revenue: number | null;
|
|
686
|
+
}
|
|
687
|
+
interface ChannelReportRow {
|
|
688
|
+
channelId: string;
|
|
689
|
+
name: string;
|
|
690
|
+
externalRef: string | null;
|
|
691
|
+
state: ChannelState;
|
|
692
|
+
allocation: ChannelCounts;
|
|
693
|
+
attribution: ChannelAttribution;
|
|
694
|
+
sellThrough: number | null;
|
|
695
|
+
}
|
|
696
|
+
interface ChannelReport {
|
|
697
|
+
assignmentVersion: number;
|
|
698
|
+
includesBookedValue: boolean;
|
|
699
|
+
/** @deprecated Use `includesBookedValue`. */
|
|
700
|
+
includesRevenue: boolean;
|
|
701
|
+
methodology: {
|
|
702
|
+
allocation: string;
|
|
703
|
+
attribution: string;
|
|
704
|
+
sellThrough: string;
|
|
705
|
+
};
|
|
706
|
+
rows: ChannelReportRow[];
|
|
707
|
+
totals: {
|
|
708
|
+
allocated: number;
|
|
709
|
+
free: number;
|
|
710
|
+
held: number;
|
|
711
|
+
booked: number;
|
|
712
|
+
blocked: number;
|
|
713
|
+
sold: number;
|
|
714
|
+
bookedValue: number | null;
|
|
715
|
+
/** @deprecated Use `bookedValue`. */
|
|
716
|
+
revenue: number | null;
|
|
717
|
+
};
|
|
718
|
+
}
|
|
719
|
+
interface ChannelReportResult {
|
|
720
|
+
report: ChannelReport;
|
|
721
|
+
event: {
|
|
722
|
+
key: string;
|
|
723
|
+
name: string;
|
|
724
|
+
seatTotal?: number;
|
|
725
|
+
currency?: string;
|
|
726
|
+
};
|
|
727
|
+
}
|
|
728
|
+
interface ChannelReportLinkRecord {
|
|
729
|
+
id: string;
|
|
730
|
+
channelId: string;
|
|
731
|
+
label: string | null;
|
|
732
|
+
includesBookedValue: boolean;
|
|
733
|
+
/** @deprecated Use `includesBookedValue`. */
|
|
734
|
+
includesRevenue: boolean;
|
|
735
|
+
expiresAt: number;
|
|
736
|
+
state: 'active' | 'revoked';
|
|
737
|
+
status: 'active' | 'revoked' | 'expired';
|
|
738
|
+
views: number;
|
|
739
|
+
lastViewedAt: number | null;
|
|
740
|
+
createdAt: number;
|
|
741
|
+
createdBy: string | null;
|
|
742
|
+
revokedAt: number | null;
|
|
743
|
+
}
|
|
744
|
+
interface ChannelReportLinkReveal {
|
|
745
|
+
link: ChannelReportLinkRecord;
|
|
746
|
+
url: string;
|
|
747
|
+
capability: string;
|
|
748
|
+
revealedOnce: true;
|
|
749
|
+
}
|
|
598
750
|
/**
|
|
599
751
|
* A one-use WebSocket subscribe ticket. `protocols` is exactly what to hand
|
|
600
752
|
* `new WebSocket(url, protocols)` — the ticket rides in `Sec-WebSocket-Protocol`
|
|
@@ -637,9 +789,11 @@ declare class ManageApi {
|
|
|
637
789
|
/** Swap the Bearer token in place (SeatManager re-mints on 401). */
|
|
638
790
|
setToken(token: string): void;
|
|
639
791
|
private auth;
|
|
640
|
-
private
|
|
641
|
-
/**
|
|
792
|
+
private authBlob;
|
|
793
|
+
/** Event-pinned organizer geometry. A manage token is never sent to `/pub`. */
|
|
642
794
|
chart(key: string): Promise<PubChartResult>;
|
|
795
|
+
/** Authenticated bytes for an Event-scoped organizer chart asset. */
|
|
796
|
+
asset(key: string, asset: string): Promise<Blob>;
|
|
643
797
|
/**
|
|
644
798
|
* The ORGANIZER's seat map: physical state, token-authed.
|
|
645
799
|
*
|
|
@@ -696,6 +850,14 @@ declare class ManageApi {
|
|
|
696
850
|
ok: true;
|
|
697
851
|
holdTtlMs: number | null;
|
|
698
852
|
}>;
|
|
853
|
+
/** Inventory lifecycle by stable integrator bookingRef. Absent on Managed. */
|
|
854
|
+
bookings(key: string, query?: InventoryBookingsQuery): Promise<InventoryBookingsPage>;
|
|
855
|
+
/** Exact configured-value snapshot plus book/replay/cancellation audit. */
|
|
856
|
+
booking(key: string, bookingRef: string): Promise<InventoryBookingDetail>;
|
|
857
|
+
/** Alias matching the server SDK vocabulary. */
|
|
858
|
+
listBookings(key: string, query?: InventoryBookingsQuery): Promise<InventoryBookingsPage>;
|
|
859
|
+
/** Alias matching the server SDK vocabulary. */
|
|
860
|
+
retrieveBooking(key: string, bookingRef: string): Promise<InventoryBookingDetail>;
|
|
699
861
|
/** The organizer's current per section/zone availability windows (needs
|
|
700
862
|
* `event:view`). Ids absent from `rules` are open / on sale. */
|
|
701
863
|
availability(key: string): Promise<{
|
|
@@ -855,6 +1017,22 @@ declare class ManageApi {
|
|
|
855
1017
|
}>;
|
|
856
1018
|
report(key: string): Promise<ReportResult>;
|
|
857
1019
|
controlRoom(key: string, windowMinutes?: number): Promise<ControlRoomSnapshot>;
|
|
1020
|
+
/** Allocation beside immutable booking-time channel attribution. */
|
|
1021
|
+
channelReport(key: string): Promise<ChannelReportResult>;
|
|
1022
|
+
createChannelReportLink(key: string, channelId: string, input?: {
|
|
1023
|
+
label?: string;
|
|
1024
|
+
includesBookedValue?: boolean;
|
|
1025
|
+
/** @deprecated Use `includesBookedValue`. */
|
|
1026
|
+
includesRevenue?: boolean;
|
|
1027
|
+
expiresAt?: number;
|
|
1028
|
+
}): Promise<ChannelReportLinkReveal>;
|
|
1029
|
+
channelReportLinks(key: string, channelId: string): Promise<{
|
|
1030
|
+
links: ChannelReportLinkRecord[];
|
|
1031
|
+
}>;
|
|
1032
|
+
revokeChannelReportLink(key: string, channelId: string, linkId: string): Promise<{
|
|
1033
|
+
ok: true;
|
|
1034
|
+
link: ChannelReportLinkRecord;
|
|
1035
|
+
}>;
|
|
858
1036
|
log(key: string, opts?: {
|
|
859
1037
|
limit?: number;
|
|
860
1038
|
before?: number;
|
|
@@ -873,7 +1051,7 @@ declare class ManageApi {
|
|
|
873
1051
|
* and drives three control-room tools on one persistent canvas:
|
|
874
1052
|
*
|
|
875
1053
|
* - **view** — a live board: realtime seat repaint (flash on hold/book),
|
|
876
|
-
* live KPI tallies +
|
|
1054
|
+
* live KPI tallies + configured booked value, and a streaming activity
|
|
877
1055
|
* feed derived from the delta stream + audit log. Read-only.
|
|
878
1056
|
* - **inspect** — select one seat to read its live inventory context.
|
|
879
1057
|
* - **block** — bulk-first block/unblock: marquee-drag, ⌘A select-all,
|
|
@@ -881,9 +1059,9 @@ declare class ManageApi {
|
|
|
881
1059
|
* one batched block/unblock (optimistic, reconciled by the WS),
|
|
882
1060
|
* and timed auto-release.
|
|
883
1061
|
*
|
|
884
|
-
* Auth:
|
|
885
|
-
* event-scoped manage token (`mse_…`) or
|
|
886
|
-
* {@link ManageApi}.
|
|
1062
|
+
* Auth: organizer chart/media, inventory, realtime and reports all carry a
|
|
1063
|
+
* Bearer event-scoped manage token (`mse_…`) or tenant secret key (`sk_…`) via
|
|
1064
|
+
* {@link ManageApi}. Organizer authority is never downgraded to buyer `/pub`.
|
|
887
1065
|
*/
|
|
888
1066
|
|
|
889
1067
|
type SeatManagerMode = 'view' | 'inspect' | 'block' | 'sections' | 'channels';
|
|
@@ -909,10 +1087,14 @@ interface SeatManagerTallies {
|
|
|
909
1087
|
/** booked / (total − blocked), 0–100 — sell-through of sellable inventory. */
|
|
910
1088
|
sellThroughPct: number;
|
|
911
1089
|
/** Exact Σ booked unit_price snapshots from the authenticated report. */
|
|
1090
|
+
bookedValue: number;
|
|
1091
|
+
/** @deprecated Use `bookedValue`. */
|
|
912
1092
|
grossRevenue: number;
|
|
913
|
-
/**
|
|
1093
|
+
/** Booked value is never reconstructed from the chart's current list price. */
|
|
1094
|
+
bookedValueStatus: 'loading' | 'current' | 'stale';
|
|
1095
|
+
/** @deprecated Use `bookedValueStatus`. */
|
|
914
1096
|
revenueStatus: 'loading' | 'current' | 'stale';
|
|
915
|
-
/** ISO-4217 currency for
|
|
1097
|
+
/** ISO-4217 currency for `bookedValue`. */
|
|
916
1098
|
currency: string;
|
|
917
1099
|
}
|
|
918
1100
|
/** One streamed activity line for the live feed. */
|
|
@@ -957,7 +1139,7 @@ interface SeatManagerOptions {
|
|
|
957
1139
|
* never narrowed server-side, so it is treated as fully capable.
|
|
958
1140
|
*/
|
|
959
1141
|
capabilities?: SeatManagerCapability[] | string[];
|
|
960
|
-
/** ISO-4217 fallback currency for
|
|
1142
|
+
/** ISO-4217 fallback currency for configured booked value (chart/event wins). */
|
|
961
1143
|
currency?: string;
|
|
962
1144
|
/** Chart theme override for the chrome (rails/bar). Chart colors come from the doc. */
|
|
963
1145
|
theme?: ChartTheme;
|
|
@@ -1052,6 +1234,8 @@ declare class SeatManager {
|
|
|
1052
1234
|
private revenueStatus;
|
|
1053
1235
|
private revenueRequest;
|
|
1054
1236
|
private controlRoomSnapshot;
|
|
1237
|
+
/** Bearer-fetched organizer chart media, revoked with this manager. */
|
|
1238
|
+
private readonly organizerAssetUrls;
|
|
1055
1239
|
/**
|
|
1056
1240
|
* The server's own totals, pinned to the client model they were read against.
|
|
1057
1241
|
* Display = server baseline + (client now − client then), so the authoritative
|
|
@@ -1260,10 +1444,9 @@ declare class SeatManager {
|
|
|
1260
1444
|
* projects its deltas, so any change inside a private channel allocation is
|
|
1261
1445
|
* structurally suppressed and the map silently drifts.
|
|
1262
1446
|
*
|
|
1263
|
-
* If the mint fails
|
|
1264
|
-
*
|
|
1265
|
-
*
|
|
1266
|
-
* the authenticated HTTP read.
|
|
1447
|
+
* If the mint fails, remain reconnecting. An unticketed socket is a buyer
|
|
1448
|
+
* projection, so applying it to organizer state would be worse than staying
|
|
1449
|
+
* visibly offline while the host refreshes authority or upgrades the API.
|
|
1267
1450
|
*/
|
|
1268
1451
|
private connect;
|
|
1269
1452
|
private scheduleReconnect;
|
|
@@ -1416,4 +1599,4 @@ declare class SeatManager {
|
|
|
1416
1599
|
private fail;
|
|
1417
1600
|
}
|
|
1418
1601
|
|
|
1419
|
-
export {
|
|
1602
|
+
export { type SeatManagerCapability as $, type AssignmentResult as A, type BucketRow as B, type ChannelListResult as C, type ControlRoomActivityEntry as D, type ControlRoomSectionMetric as E, type ControlRoomSnapshot as F, type InventoryBooking as G, type InventoryBookingActivity as H, type IntentSwitchBlockedDetails as I, type InventoryBookingDetail as J, type InventoryBookingObject as K, type InventoryBookingState as L, type InventoryBookingsPage as M, type InventoryBookingsQuery as N, type LogEntry as O, type LogPage as P, ManageApi as Q, ManageApiError as R, PUBLIC_CHANNEL_ID as S, PUBLIC_CHANNEL_NAME as T, type ReportByStatus as U, type ReportCategoryMeta as V, type ReportCategoryRow as W, type ReportResult as X, SeatManager as Y, type SeatManagerActionResult as Z, type SeatManagerActivity as _, type ChannelAllocationPage as a, type SeatManagerConnection as a0, type SeatManagerMode as a1, type SeatManagerOptions as a2, type SeatManagerTallies as a3, type SelectionSourceRow as a4, accessIntentDescription as a5, accessIntentLabel as a6, accessLine as a7, accessLinkBadge as a8, accessLinkErrorCopy as a9, accessLinkIsLive as aa, accessLinkPolicyLines as ab, bucketRows as ac, dropReviewRows as ad, intentForbidsCopy as ae, intentSwitchBlockedCopy as af, isPublicChannelId as ag, markerLetter as ah, markerOf as ai, mutationCount as aj, needsMoveConfirmation as ak, planAssignment as al, retryAfterCopy as am, selectionSources as an, stateBadge as ao, suggestMarker as ap, type ChannelRecord as b, type ChannelPreviewProjection as c, type ChannelAccessIntent as d, type AccessLinkReveal as e, type AccessLinkStatusRecord as f, type ChannelSeatStatus as g, ACCESS_LINK_DEFAULTS as h, type AccessIntentForbidsDetails as i, type AccessLinkRecord as j, type AccessLinkState as k, type AccessLinkStatus as l, type ArchiveBlockedDetails as m, type AssignmentBuckets as n, type AssignmentDropDetails as o, type ChannelAccessSummary as p, type ChannelAttribution as q, type ChannelAuditEntry as r, type ChannelAuditPage as s, type ChannelCounts as t, type ChannelReport as u, type ChannelReportLinkRecord as v, type ChannelReportLinkReveal as w, type ChannelReportResult as x, type ChannelReportRow as y, type ChannelState as z };
|
|
@@ -401,8 +401,9 @@ declare function stateBadge(state: ChannelState | 'builtin'): string;
|
|
|
401
401
|
* cookie-CSRF gate, so no extra client header is needed.
|
|
402
402
|
* - `credentials: 'omit'` — there is no session cookie; the CMS runs
|
|
403
403
|
* cross-origin. The worker's credentialed CORS still echoes the CMS origin.
|
|
404
|
-
* -
|
|
405
|
-
*
|
|
404
|
+
* - chart geometry and authored media use authenticated organizer Event
|
|
405
|
+
* routes. A manage bearer is not buyer authority and is never sent to
|
|
406
|
+
* `/pub`. The seat STATE reads are private too. `/pub/.../objects` and an unticketed
|
|
406
407
|
* `/pub/.../subscribe` both answer with the BUYER projection, which shows
|
|
407
408
|
* inventory the caller may not buy as a neutral `blocked` — so an organizer
|
|
408
409
|
* reading them sees its own channel allocations as blocked seats. Both now
|
|
@@ -506,7 +507,9 @@ interface ReportCategoryRow {
|
|
|
506
507
|
held: number;
|
|
507
508
|
booked: number;
|
|
508
509
|
not_for_sale: number;
|
|
509
|
-
/**
|
|
510
|
+
/** Configured-price snapshots for booked inventory; not proof of payment. */
|
|
511
|
+
bookedValue: number;
|
|
512
|
+
/** @deprecated Use `bookedValue`. */
|
|
510
513
|
bookedRevenue: number;
|
|
511
514
|
}
|
|
512
515
|
interface ReportCategoryMeta {
|
|
@@ -538,6 +541,8 @@ interface ControlRoomSectionMetric {
|
|
|
538
541
|
held: number;
|
|
539
542
|
booked: number;
|
|
540
543
|
not_for_sale: number;
|
|
544
|
+
bookedValue: number;
|
|
545
|
+
/** @deprecated Use `bookedValue`. */
|
|
541
546
|
bookedRevenue: number;
|
|
542
547
|
}
|
|
543
548
|
/** Recent seat-state change safe for an event:view control-room grant. Full
|
|
@@ -557,6 +562,12 @@ interface ControlRoomSnapshot {
|
|
|
557
562
|
booked: number;
|
|
558
563
|
blocked: number;
|
|
559
564
|
};
|
|
565
|
+
/** Configured value attached to booked inventory, never payment revenue. */
|
|
566
|
+
bookedValue: {
|
|
567
|
+
gross: number;
|
|
568
|
+
bySection: ControlRoomSectionMetric[];
|
|
569
|
+
};
|
|
570
|
+
/** @deprecated Use `bookedValue`. */
|
|
560
571
|
revenue: {
|
|
561
572
|
gross: number;
|
|
562
573
|
bySection: ControlRoomSectionMetric[];
|
|
@@ -566,6 +577,8 @@ interface ControlRoomSnapshot {
|
|
|
566
577
|
bySection: Array<{
|
|
567
578
|
sectionId: string;
|
|
568
579
|
netBooked: number;
|
|
580
|
+
bookedValue: number;
|
|
581
|
+
/** @deprecated Use `bookedValue`. */
|
|
569
582
|
grossRevenue: number;
|
|
570
583
|
previousNetBooked: number;
|
|
571
584
|
trend: 'rising' | 'steady' | 'cooling';
|
|
@@ -595,6 +608,145 @@ interface LogPage {
|
|
|
595
608
|
entries: LogEntry[];
|
|
596
609
|
nextBefore: number | null;
|
|
597
610
|
}
|
|
611
|
+
/** Platform/SDK inventory history — deliberately unrelated to commerce Orders. */
|
|
612
|
+
type InventoryBookingState = 'booked' | 'partially_cancelled' | 'cancelled';
|
|
613
|
+
interface InventoryBookingObject {
|
|
614
|
+
label: string;
|
|
615
|
+
objectId: string;
|
|
616
|
+
objectType: 'seat' | 'booth' | 'ga' | 'table';
|
|
617
|
+
categoryKey: string;
|
|
618
|
+
sectionId: string | null;
|
|
619
|
+
sectionLabel: string | null;
|
|
620
|
+
zoneId: string | null;
|
|
621
|
+
tierId: string | null;
|
|
622
|
+
releaseId: string | null;
|
|
623
|
+
bookingMode: 'individual' | 'whole' | 'variable';
|
|
624
|
+
quantity: number;
|
|
625
|
+
/** Event-configured price snapshot; not proof of what a buyer paid. */
|
|
626
|
+
unitPrice: number;
|
|
627
|
+
configuredValue: number;
|
|
628
|
+
currency: string;
|
|
629
|
+
channelId: string | null;
|
|
630
|
+
channelExternalRef: string | null;
|
|
631
|
+
source: string;
|
|
632
|
+
state: 'booked' | 'cancelled';
|
|
633
|
+
bookedAt: number;
|
|
634
|
+
cancelledAt: number | null;
|
|
635
|
+
}
|
|
636
|
+
interface InventoryBooking {
|
|
637
|
+
eventKey: string;
|
|
638
|
+
eventMode: 'live' | 'test';
|
|
639
|
+
bookingRef: string;
|
|
640
|
+
state: InventoryBookingState;
|
|
641
|
+
bookedAt: number;
|
|
642
|
+
updatedAt: number;
|
|
643
|
+
cancelledAt: number | null;
|
|
644
|
+
source: string;
|
|
645
|
+
bookedBy: string | null;
|
|
646
|
+
lastActor: string | null;
|
|
647
|
+
lastSource: string;
|
|
648
|
+
labels: string[];
|
|
649
|
+
objects: InventoryBookingObject[];
|
|
650
|
+
quantity: number;
|
|
651
|
+
activeQuantity: number;
|
|
652
|
+
configuredValue: number;
|
|
653
|
+
activeConfiguredValue: number;
|
|
654
|
+
currency: string | null;
|
|
655
|
+
}
|
|
656
|
+
interface InventoryBookingsQuery {
|
|
657
|
+
q?: string;
|
|
658
|
+
state?: InventoryBookingState | null;
|
|
659
|
+
cursor?: string | null;
|
|
660
|
+
limit?: number;
|
|
661
|
+
}
|
|
662
|
+
interface InventoryBookingsPage {
|
|
663
|
+
bookings: InventoryBooking[];
|
|
664
|
+
nextCursor: string | null;
|
|
665
|
+
}
|
|
666
|
+
interface InventoryBookingActivity {
|
|
667
|
+
id: number;
|
|
668
|
+
action: 'book' | 'replay' | 'partial_cancel' | 'cancel' | 'reconcile';
|
|
669
|
+
at: number;
|
|
670
|
+
labels: string[];
|
|
671
|
+
actor: string | null;
|
|
672
|
+
source: string;
|
|
673
|
+
}
|
|
674
|
+
interface InventoryBookingDetail {
|
|
675
|
+
booking: InventoryBooking;
|
|
676
|
+
activity: InventoryBookingActivity[];
|
|
677
|
+
activityTruncated: boolean;
|
|
678
|
+
}
|
|
679
|
+
/** Booking-time facts attached to the channel that produced the inventory move. */
|
|
680
|
+
interface ChannelAttribution {
|
|
681
|
+
sold: number;
|
|
682
|
+
units: number;
|
|
683
|
+
bookedValue: number | null;
|
|
684
|
+
/** @deprecated Use `bookedValue`. */
|
|
685
|
+
revenue: number | null;
|
|
686
|
+
}
|
|
687
|
+
interface ChannelReportRow {
|
|
688
|
+
channelId: string;
|
|
689
|
+
name: string;
|
|
690
|
+
externalRef: string | null;
|
|
691
|
+
state: ChannelState;
|
|
692
|
+
allocation: ChannelCounts;
|
|
693
|
+
attribution: ChannelAttribution;
|
|
694
|
+
sellThrough: number | null;
|
|
695
|
+
}
|
|
696
|
+
interface ChannelReport {
|
|
697
|
+
assignmentVersion: number;
|
|
698
|
+
includesBookedValue: boolean;
|
|
699
|
+
/** @deprecated Use `includesBookedValue`. */
|
|
700
|
+
includesRevenue: boolean;
|
|
701
|
+
methodology: {
|
|
702
|
+
allocation: string;
|
|
703
|
+
attribution: string;
|
|
704
|
+
sellThrough: string;
|
|
705
|
+
};
|
|
706
|
+
rows: ChannelReportRow[];
|
|
707
|
+
totals: {
|
|
708
|
+
allocated: number;
|
|
709
|
+
free: number;
|
|
710
|
+
held: number;
|
|
711
|
+
booked: number;
|
|
712
|
+
blocked: number;
|
|
713
|
+
sold: number;
|
|
714
|
+
bookedValue: number | null;
|
|
715
|
+
/** @deprecated Use `bookedValue`. */
|
|
716
|
+
revenue: number | null;
|
|
717
|
+
};
|
|
718
|
+
}
|
|
719
|
+
interface ChannelReportResult {
|
|
720
|
+
report: ChannelReport;
|
|
721
|
+
event: {
|
|
722
|
+
key: string;
|
|
723
|
+
name: string;
|
|
724
|
+
seatTotal?: number;
|
|
725
|
+
currency?: string;
|
|
726
|
+
};
|
|
727
|
+
}
|
|
728
|
+
interface ChannelReportLinkRecord {
|
|
729
|
+
id: string;
|
|
730
|
+
channelId: string;
|
|
731
|
+
label: string | null;
|
|
732
|
+
includesBookedValue: boolean;
|
|
733
|
+
/** @deprecated Use `includesBookedValue`. */
|
|
734
|
+
includesRevenue: boolean;
|
|
735
|
+
expiresAt: number;
|
|
736
|
+
state: 'active' | 'revoked';
|
|
737
|
+
status: 'active' | 'revoked' | 'expired';
|
|
738
|
+
views: number;
|
|
739
|
+
lastViewedAt: number | null;
|
|
740
|
+
createdAt: number;
|
|
741
|
+
createdBy: string | null;
|
|
742
|
+
revokedAt: number | null;
|
|
743
|
+
}
|
|
744
|
+
interface ChannelReportLinkReveal {
|
|
745
|
+
link: ChannelReportLinkRecord;
|
|
746
|
+
url: string;
|
|
747
|
+
capability: string;
|
|
748
|
+
revealedOnce: true;
|
|
749
|
+
}
|
|
598
750
|
/**
|
|
599
751
|
* A one-use WebSocket subscribe ticket. `protocols` is exactly what to hand
|
|
600
752
|
* `new WebSocket(url, protocols)` — the ticket rides in `Sec-WebSocket-Protocol`
|
|
@@ -637,9 +789,11 @@ declare class ManageApi {
|
|
|
637
789
|
/** Swap the Bearer token in place (SeatManager re-mints on 401). */
|
|
638
790
|
setToken(token: string): void;
|
|
639
791
|
private auth;
|
|
640
|
-
private
|
|
641
|
-
/**
|
|
792
|
+
private authBlob;
|
|
793
|
+
/** Event-pinned organizer geometry. A manage token is never sent to `/pub`. */
|
|
642
794
|
chart(key: string): Promise<PubChartResult>;
|
|
795
|
+
/** Authenticated bytes for an Event-scoped organizer chart asset. */
|
|
796
|
+
asset(key: string, asset: string): Promise<Blob>;
|
|
643
797
|
/**
|
|
644
798
|
* The ORGANIZER's seat map: physical state, token-authed.
|
|
645
799
|
*
|
|
@@ -696,6 +850,14 @@ declare class ManageApi {
|
|
|
696
850
|
ok: true;
|
|
697
851
|
holdTtlMs: number | null;
|
|
698
852
|
}>;
|
|
853
|
+
/** Inventory lifecycle by stable integrator bookingRef. Absent on Managed. */
|
|
854
|
+
bookings(key: string, query?: InventoryBookingsQuery): Promise<InventoryBookingsPage>;
|
|
855
|
+
/** Exact configured-value snapshot plus book/replay/cancellation audit. */
|
|
856
|
+
booking(key: string, bookingRef: string): Promise<InventoryBookingDetail>;
|
|
857
|
+
/** Alias matching the server SDK vocabulary. */
|
|
858
|
+
listBookings(key: string, query?: InventoryBookingsQuery): Promise<InventoryBookingsPage>;
|
|
859
|
+
/** Alias matching the server SDK vocabulary. */
|
|
860
|
+
retrieveBooking(key: string, bookingRef: string): Promise<InventoryBookingDetail>;
|
|
699
861
|
/** The organizer's current per section/zone availability windows (needs
|
|
700
862
|
* `event:view`). Ids absent from `rules` are open / on sale. */
|
|
701
863
|
availability(key: string): Promise<{
|
|
@@ -855,6 +1017,22 @@ declare class ManageApi {
|
|
|
855
1017
|
}>;
|
|
856
1018
|
report(key: string): Promise<ReportResult>;
|
|
857
1019
|
controlRoom(key: string, windowMinutes?: number): Promise<ControlRoomSnapshot>;
|
|
1020
|
+
/** Allocation beside immutable booking-time channel attribution. */
|
|
1021
|
+
channelReport(key: string): Promise<ChannelReportResult>;
|
|
1022
|
+
createChannelReportLink(key: string, channelId: string, input?: {
|
|
1023
|
+
label?: string;
|
|
1024
|
+
includesBookedValue?: boolean;
|
|
1025
|
+
/** @deprecated Use `includesBookedValue`. */
|
|
1026
|
+
includesRevenue?: boolean;
|
|
1027
|
+
expiresAt?: number;
|
|
1028
|
+
}): Promise<ChannelReportLinkReveal>;
|
|
1029
|
+
channelReportLinks(key: string, channelId: string): Promise<{
|
|
1030
|
+
links: ChannelReportLinkRecord[];
|
|
1031
|
+
}>;
|
|
1032
|
+
revokeChannelReportLink(key: string, channelId: string, linkId: string): Promise<{
|
|
1033
|
+
ok: true;
|
|
1034
|
+
link: ChannelReportLinkRecord;
|
|
1035
|
+
}>;
|
|
858
1036
|
log(key: string, opts?: {
|
|
859
1037
|
limit?: number;
|
|
860
1038
|
before?: number;
|
|
@@ -873,7 +1051,7 @@ declare class ManageApi {
|
|
|
873
1051
|
* and drives three control-room tools on one persistent canvas:
|
|
874
1052
|
*
|
|
875
1053
|
* - **view** — a live board: realtime seat repaint (flash on hold/book),
|
|
876
|
-
* live KPI tallies +
|
|
1054
|
+
* live KPI tallies + configured booked value, and a streaming activity
|
|
877
1055
|
* feed derived from the delta stream + audit log. Read-only.
|
|
878
1056
|
* - **inspect** — select one seat to read its live inventory context.
|
|
879
1057
|
* - **block** — bulk-first block/unblock: marquee-drag, ⌘A select-all,
|
|
@@ -881,9 +1059,9 @@ declare class ManageApi {
|
|
|
881
1059
|
* one batched block/unblock (optimistic, reconciled by the WS),
|
|
882
1060
|
* and timed auto-release.
|
|
883
1061
|
*
|
|
884
|
-
* Auth:
|
|
885
|
-
* event-scoped manage token (`mse_…`) or
|
|
886
|
-
* {@link ManageApi}.
|
|
1062
|
+
* Auth: organizer chart/media, inventory, realtime and reports all carry a
|
|
1063
|
+
* Bearer event-scoped manage token (`mse_…`) or tenant secret key (`sk_…`) via
|
|
1064
|
+
* {@link ManageApi}. Organizer authority is never downgraded to buyer `/pub`.
|
|
887
1065
|
*/
|
|
888
1066
|
|
|
889
1067
|
type SeatManagerMode = 'view' | 'inspect' | 'block' | 'sections' | 'channels';
|
|
@@ -909,10 +1087,14 @@ interface SeatManagerTallies {
|
|
|
909
1087
|
/** booked / (total − blocked), 0–100 — sell-through of sellable inventory. */
|
|
910
1088
|
sellThroughPct: number;
|
|
911
1089
|
/** Exact Σ booked unit_price snapshots from the authenticated report. */
|
|
1090
|
+
bookedValue: number;
|
|
1091
|
+
/** @deprecated Use `bookedValue`. */
|
|
912
1092
|
grossRevenue: number;
|
|
913
|
-
/**
|
|
1093
|
+
/** Booked value is never reconstructed from the chart's current list price. */
|
|
1094
|
+
bookedValueStatus: 'loading' | 'current' | 'stale';
|
|
1095
|
+
/** @deprecated Use `bookedValueStatus`. */
|
|
914
1096
|
revenueStatus: 'loading' | 'current' | 'stale';
|
|
915
|
-
/** ISO-4217 currency for
|
|
1097
|
+
/** ISO-4217 currency for `bookedValue`. */
|
|
916
1098
|
currency: string;
|
|
917
1099
|
}
|
|
918
1100
|
/** One streamed activity line for the live feed. */
|
|
@@ -957,7 +1139,7 @@ interface SeatManagerOptions {
|
|
|
957
1139
|
* never narrowed server-side, so it is treated as fully capable.
|
|
958
1140
|
*/
|
|
959
1141
|
capabilities?: SeatManagerCapability[] | string[];
|
|
960
|
-
/** ISO-4217 fallback currency for
|
|
1142
|
+
/** ISO-4217 fallback currency for configured booked value (chart/event wins). */
|
|
961
1143
|
currency?: string;
|
|
962
1144
|
/** Chart theme override for the chrome (rails/bar). Chart colors come from the doc. */
|
|
963
1145
|
theme?: ChartTheme;
|
|
@@ -1052,6 +1234,8 @@ declare class SeatManager {
|
|
|
1052
1234
|
private revenueStatus;
|
|
1053
1235
|
private revenueRequest;
|
|
1054
1236
|
private controlRoomSnapshot;
|
|
1237
|
+
/** Bearer-fetched organizer chart media, revoked with this manager. */
|
|
1238
|
+
private readonly organizerAssetUrls;
|
|
1055
1239
|
/**
|
|
1056
1240
|
* The server's own totals, pinned to the client model they were read against.
|
|
1057
1241
|
* Display = server baseline + (client now − client then), so the authoritative
|
|
@@ -1260,10 +1444,9 @@ declare class SeatManager {
|
|
|
1260
1444
|
* projects its deltas, so any change inside a private channel allocation is
|
|
1261
1445
|
* structurally suppressed and the map silently drifts.
|
|
1262
1446
|
*
|
|
1263
|
-
* If the mint fails
|
|
1264
|
-
*
|
|
1265
|
-
*
|
|
1266
|
-
* the authenticated HTTP read.
|
|
1447
|
+
* If the mint fails, remain reconnecting. An unticketed socket is a buyer
|
|
1448
|
+
* projection, so applying it to organizer state would be worse than staying
|
|
1449
|
+
* visibly offline while the host refreshes authority or upgrades the API.
|
|
1267
1450
|
*/
|
|
1268
1451
|
private connect;
|
|
1269
1452
|
private scheduleReconnect;
|
|
@@ -1416,4 +1599,4 @@ declare class SeatManager {
|
|
|
1416
1599
|
private fail;
|
|
1417
1600
|
}
|
|
1418
1601
|
|
|
1419
|
-
export {
|
|
1602
|
+
export { type SeatManagerCapability as $, type AssignmentResult as A, type BucketRow as B, type ChannelListResult as C, type ControlRoomActivityEntry as D, type ControlRoomSectionMetric as E, type ControlRoomSnapshot as F, type InventoryBooking as G, type InventoryBookingActivity as H, type IntentSwitchBlockedDetails as I, type InventoryBookingDetail as J, type InventoryBookingObject as K, type InventoryBookingState as L, type InventoryBookingsPage as M, type InventoryBookingsQuery as N, type LogEntry as O, type LogPage as P, ManageApi as Q, ManageApiError as R, PUBLIC_CHANNEL_ID as S, PUBLIC_CHANNEL_NAME as T, type ReportByStatus as U, type ReportCategoryMeta as V, type ReportCategoryRow as W, type ReportResult as X, SeatManager as Y, type SeatManagerActionResult as Z, type SeatManagerActivity as _, type ChannelAllocationPage as a, type SeatManagerConnection as a0, type SeatManagerMode as a1, type SeatManagerOptions as a2, type SeatManagerTallies as a3, type SelectionSourceRow as a4, accessIntentDescription as a5, accessIntentLabel as a6, accessLine as a7, accessLinkBadge as a8, accessLinkErrorCopy as a9, accessLinkIsLive as aa, accessLinkPolicyLines as ab, bucketRows as ac, dropReviewRows as ad, intentForbidsCopy as ae, intentSwitchBlockedCopy as af, isPublicChannelId as ag, markerLetter as ah, markerOf as ai, mutationCount as aj, needsMoveConfirmation as ak, planAssignment as al, retryAfterCopy as am, selectionSources as an, stateBadge as ao, suggestMarker as ap, type ChannelRecord as b, type ChannelPreviewProjection as c, type ChannelAccessIntent as d, type AccessLinkReveal as e, type AccessLinkStatusRecord as f, type ChannelSeatStatus as g, ACCESS_LINK_DEFAULTS as h, type AccessIntentForbidsDetails as i, type AccessLinkRecord as j, type AccessLinkState as k, type AccessLinkStatus as l, type ArchiveBlockedDetails as m, type AssignmentBuckets as n, type AssignmentDropDetails as o, type ChannelAccessSummary as p, type ChannelAttribution as q, type ChannelAuditEntry as r, type ChannelAuditPage as s, type ChannelCounts as t, type ChannelReport as u, type ChannelReportLinkRecord as v, type ChannelReportLinkReveal as w, type ChannelReportResult as x, type ChannelReportRow as y, type ChannelState as z };
|