@playaos/api-client 0.57.0 → 0.59.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/index.d.ts CHANGED
@@ -16,6 +16,29 @@ export declare class ApiClientError extends Error {
16
16
  */
17
17
  retryAfter?: number | undefined);
18
18
  }
19
+ /**
20
+ * Error codes a caller may branch on. `ApiClientError.code` stays a plain `string`, since the API
21
+ * can add codes; compare against these constants rather than string literals.
22
+ */
23
+ export declare const ApiErrorCode: {
24
+ /** 403: the request writes to an archived event, which is read-only (ADR-128/132). */
25
+ readonly EVENT_READ_ONLY: "EVENT_READ_ONLY";
26
+ /** 409: a year-only request matches more than one event; resend with `eventId` (ADR-132). */
27
+ readonly EVENT_REQUIRED: "EVENT_REQUIRED";
28
+ };
29
+ /** The embed API spells the read-only code in lower_snake; methods that fall back to embed see it. */
30
+ declare const EMBED_EVENT_READ_ONLY = "event_read_only";
31
+ /** An `ApiClientError` that `isEventReadOnlyError` accepted: a 403 with either read-only spelling. */
32
+ type EventReadOnlyApiError = ApiClientError & {
33
+ readonly status: 403;
34
+ readonly code: typeof ApiErrorCode.EVENT_READ_ONLY | typeof EMBED_EVENT_READ_ONLY;
35
+ };
36
+ /**
37
+ * True when a write was refused because its event is archived and read-only: 403 with code
38
+ * `EVENT_READ_ONLY` (or embed's `event_read_only`). Reads of an archived event still succeed. Plain
39
+ * 403 FORBIDDEN (scope or role) is not this error.
40
+ */
41
+ export declare function isEventReadOnlyError(error: unknown): error is EventReadOnlyApiError;
19
42
  //#endregion
20
43
  //#region src/types.d.ts
21
44
  /** Cursor-paginated list envelope returned by v1 list endpoints (PLA-779). */
@@ -35,6 +58,23 @@ type PaginationParams = {
35
58
  /** Opaque cursor from a previous response's nextCursor. */
36
59
  cursor?: string;
37
60
  };
61
+ /**
62
+ * Event scope for event-scoped reads and writes (ADR-132). Send `eventId` for a canonical event.
63
+ * Year handling is endpoint-specific during the ADR-132 rollout (`playa-0i3qp.11.3.x`): endpoints
64
+ * that have adopted the contract resolve a `year` alone to at most one event and answer
65
+ * 409 `EVENT_REQUIRED` with the candidate events when it matches several; endpoints that have
66
+ * not adopted it yet still treat `year` as the legacy annual filter.
67
+ *
68
+ * Shifts have adopted it: `shifts.list`, `adminList`, `planner`, `mobile`, `memberView`, the date-keyed
69
+ * `adminOperation` actions and the `adminWorkflow` publish action. `shifts.list` and `shifts.adminList`
70
+ * with neither field keep the org-wide read (documented exception).
71
+ */
72
+ type EventScopeParams = {
73
+ /** Legacy camp year. */
74
+ year?: number;
75
+ /** Canonical event ID. */
76
+ eventId?: string;
77
+ };
38
78
  interface Member {
39
79
  id: string;
40
80
  firstName: string;
@@ -123,7 +163,29 @@ interface ApplicationCapacity {
123
163
  limit: number;
124
164
  atCapacity: boolean;
125
165
  }
166
+ interface ApplicationWorkflowCapabilities {
167
+ transitions: {
168
+ to: "approved" | "rejected" | "waitlisted" | "interviewed";
169
+ enabled: boolean;
170
+ reason?: string;
171
+ }[];
172
+ invite: {
173
+ enabled: boolean;
174
+ reason?: string;
175
+ };
176
+ interviewNote: {
177
+ enabled: boolean;
178
+ reason?: string;
179
+ };
180
+ annotations: {
181
+ notes: boolean;
182
+ tags: boolean;
183
+ scores: boolean;
184
+ };
185
+ }
126
186
  interface ApplicationAdmin extends Application {
187
+ /** Advisory server policy; writes remain authoritative. Absent on older servers. */
188
+ workflowCapabilities?: ApplicationWorkflowCapabilities;
127
189
  /** Applicant phone from the joined profile (PLA-1322). */
128
190
  phone: string | null;
129
191
  /** Applicant birthday (YYYY-MM-DD) from the joined profile (PLA-1332). */
@@ -173,6 +235,17 @@ interface ImportantDate {
173
235
  endDate: string | null;
174
236
  category: string | null;
175
237
  year: number;
238
+ /** Canonical event the date belongs to (ADR-132); null for an annual camp date. */
239
+ eventId?: string | null;
240
+ }
241
+ type EventStatus = "draft" | "published" | "archived";
242
+ interface EventSummary {
243
+ id: string;
244
+ name: string;
245
+ status: EventStatus;
246
+ startDate: string | null;
247
+ endDate: string | null;
248
+ timezone: string | null;
176
249
  }
177
250
  interface SummerCampAttendee {
178
251
  profileId: string;
@@ -186,6 +259,8 @@ interface SummerCampAttendee {
186
259
  }
187
260
  interface SheetsSyncResult {
188
261
  year: number;
262
+ /** The event exported, or null when a camp year was exported (ADR-132). */
263
+ eventId: string | null;
189
264
  tabs: {
190
265
  name: string;
191
266
  rows: number;
@@ -288,8 +363,9 @@ interface PhotoExportJob {
288
363
  completedAt: string | null;
289
364
  }
290
365
  interface CreatePhotoExportInput {
366
+ /** Canonical event (`events.id`) to export. Required since 0.58.0, which removed `year`. */
367
+ eventId: string;
291
368
  attending?: "true" | "all";
292
- year?: number;
293
369
  role?: string;
294
370
  status?: string;
295
371
  search?: string;
@@ -300,7 +376,8 @@ interface OnboardingProgress {
300
376
  orgId: string;
301
377
  userId: string;
302
378
  itemId: string;
303
- year: number;
379
+ eventId: string | null;
380
+ year: number | null;
304
381
  completed: boolean | null;
305
382
  }
306
383
  /** A camp year with its per-year member/date counts (`GET /bookkeeping/years`, PLA-1345). */
@@ -319,13 +396,31 @@ interface CampYearWithCounts {
319
396
  /** Ops-binder export preview counts (`GET /bookkeeping/export-preview`, PLA-1345). */
320
397
  interface BookkeepingExportPreview {
321
398
  year: number | null;
399
+ /** The event counted, or null on the annual path (ADR-132). */
400
+ eventId: string | null;
322
401
  memberCount: number;
323
402
  menuCount: number;
324
403
  shelterCount: number;
325
404
  }
405
+ /** Financial rollup for an event or camp year (`GET /bookkeeping/summary`). Money fields are decimal strings. */
406
+ interface BookkeepingSummary {
407
+ year: number;
408
+ /** The event read, or null on the annual path (ADR-132). */
409
+ eventId: string | null;
410
+ revenue: string;
411
+ paymentCount: number;
412
+ budgetTotal: string;
413
+ budgetSpent: string;
414
+ vendorPaid: string;
415
+ vendorOutstanding: string;
416
+ vendorCount: number;
417
+ memberCount: number;
418
+ }
326
419
  /** Admin dashboard rollup (`GET /reports/dashboard`). */
327
420
  interface DashboardMetrics {
328
421
  year: number;
422
+ /** The event read, or null on the annual path (ADR-132). */
423
+ eventId: string | null;
329
424
  asOf: string;
330
425
  totalHeadcount: number;
331
426
  memberCount: number;
@@ -358,6 +453,8 @@ interface BuildStrikeReportRow {
358
453
  /** Logistics dashboard rollup (`GET /logistics/summary`, PLA-1342). */
359
454
  interface LogisticsSummary {
360
455
  year: number;
456
+ /** The event read, or null on the annual path (ADR-132). */
457
+ eventId: string | null;
361
458
  buildWeekCount: number;
362
459
  confirmedBuildWeek: number;
363
460
  strikeCrewCount: number;
@@ -415,6 +512,8 @@ interface TshirtSizeTotal {
415
512
  }
416
513
  /** The three logistics breakdown views, bundled (`GET /logistics/breakdowns`). */
417
514
  interface LogisticsBreakdowns {
515
+ /** The event read, or null on the annual path (ADR-132). */
516
+ eventId: string | null;
418
517
  rvAmperage: RvAmperageTotal[];
419
518
  shelterTypes: ShelterTypeDistribution[];
420
519
  tshirtSizes: TshirtSizeTotal[];
@@ -444,7 +543,8 @@ interface MemberCustomChecklistItem {
444
543
  categoryId: string;
445
544
  name: string;
446
545
  completed: boolean | null;
447
- year: number;
546
+ eventId: string | null;
547
+ year: number | null;
448
548
  }
449
549
  interface DuesStatus {
450
550
  userId: string | null;
@@ -453,6 +553,8 @@ interface DuesStatus {
453
553
  amountOwed: string | null;
454
554
  amountPaid: string | null;
455
555
  balance: string | null;
556
+ /** Event the row is for; absent on the annual path (ADR-132). */
557
+ eventId?: string | null;
456
558
  }
457
559
  /** Per-member dues state from `member_dues_status` (PLA-1336). */
458
560
  interface MemberDuesStatus {
@@ -471,6 +573,10 @@ interface MemberDuesStatus {
471
573
  attendanceResponse: string | null;
472
574
  /** Whether the member has ever signed in (PLA-1343). */
473
575
  hasLoggedIn: boolean | null;
576
+ /** Event the row is for; absent or null on the annual path (ADR-132). */
577
+ eventId?: string | null;
578
+ /** Event participation status; absent or null on the annual path. */
579
+ participationStatus?: string | null;
474
580
  }
475
581
  /** Per-tier dues totals from `dues_summary` (PLA-1336). */
476
582
  interface DuesSummaryRow {
@@ -520,6 +626,8 @@ interface ShiftSignup {
520
626
  userId: string;
521
627
  status: string | null;
522
628
  role: string | null;
629
+ canceledAt?: string | null;
630
+ waitlistedAt?: string | null;
523
631
  }
524
632
  interface ShiftType {
525
633
  id: string;
@@ -527,10 +635,16 @@ interface ShiftType {
527
635
  description: string | null;
528
636
  }
529
637
  interface Shift {
638
+ /** Server-owned self-service time window only; publication and capacity are separate. */
639
+ selfServiceOpen?: boolean;
640
+ /** Effective capacity for self-service signup; independent of mobile/admin policies. */
641
+ selfSignupCapacity?: number;
530
642
  id: string;
531
643
  orgId: string;
532
644
  shiftDate: string;
533
645
  year: number;
646
+ /** Canonical event the shift belongs to; null on the annual (untagged) calendar (ADR-132). */
647
+ eventId: string | null;
534
648
  startTime: string | null;
535
649
  endTime: string | null;
536
650
  maxSlots: number | null;
@@ -560,7 +674,10 @@ interface AdminShiftType extends ShiftType {
560
674
  interface AdminShelter {
561
675
  id: string;
562
676
  orgId: string;
677
+ /** Camp-year label; event shelters carry the resolved event's year. */
563
678
  year: number;
679
+ /** Event the shelter belongs to; null for an annual shelter. */
680
+ eventId: string | null;
564
681
  name: string | null;
565
682
  shelterType: string;
566
683
  ownerUserId: string | null;
@@ -588,8 +705,28 @@ interface AdminShelter {
588
705
  } | null;
589
706
  }>;
590
707
  }
708
+ /** An organization-owned event, as listed on `GET /org` (ADR-132). */
709
+ interface OrgEvent {
710
+ id: string;
711
+ name: string;
712
+ slug: string;
713
+ status: "draft" | "published" | "archived";
714
+ startDate: string | null;
715
+ endDate: string | null;
716
+ }
591
717
  interface OrgConfig {
718
+ /** Canonical branding fields; absent on older API deployments. */
719
+ tagline?: string | null;
720
+ description?: string | null;
721
+ /**
722
+ * @deprecated Display and legacy use only: the configured active camp year, else the current
723
+ * calendar year. Not an event scope (ADR-132); send `eventId` or an explicit `year` instead.
724
+ */
592
725
  activeCampYear: number;
726
+ /** Actual configured active camp year; absent on older API deployments. Never a calendar fallback. */
727
+ configuredActiveCampYear?: number | null;
728
+ /** The organization's events, ordered by start date; absent on older API deployments (ADR-132). */
729
+ events?: OrgEvent[];
593
730
  id: string;
594
731
  name: string;
595
732
  slug: string;
@@ -670,6 +807,8 @@ interface CampDocument {
670
807
  isActive: boolean | null;
671
808
  requiresEsignature: boolean | null;
672
809
  year: number;
810
+ /** Canonical event the document belongs to (ADR-132); null for an annual camp document. */
811
+ eventId?: string | null;
673
812
  publishedAt: string | null;
674
813
  createdAt: string | null;
675
814
  updatedAt: string | null;
@@ -704,7 +843,10 @@ interface Shelter {
704
843
  name: string | null;
705
844
  shelterType: string;
706
845
  ownerUserId: string | null;
846
+ /** Camp-year label; event shelters carry the resolved event's year. */
707
847
  year: number;
848
+ /** Event the shelter belongs to; null for an annual shelter. */
849
+ eventId: string | null;
708
850
  maxOccupants: number | null;
709
851
  rvLengthFt: number | null;
710
852
  rvAmperage: number | null;
@@ -821,6 +963,13 @@ interface MemberGroupRosterRow {
821
963
  profileStatus: string | null;
822
964
  }
823
965
  interface ApplicationCreatePayload {
966
+ /** Stable opaque UUID for exact-payload receipt recovery; never reuse for changed answers. */
967
+ submission_id?: string;
968
+ /**
969
+ * The event to apply to. Required only when the active camp year has several events: the server
970
+ * answers 409 EVENT_REQUIRED with the candidates, and the retry sends one of them (ADR-132).
971
+ */
972
+ event_id?: string;
824
973
  acknowledged_expectations?: true;
825
974
  first_name: string;
826
975
  last_name: string;
@@ -849,6 +998,10 @@ interface ApplicationCreatePayload {
849
998
  interface ApplicationCreateResponse {
850
999
  applicationId: string;
851
1000
  status: string;
1001
+ /** Original accepted camp year. */
1002
+ year?: number;
1003
+ /** Present for opted-in submissions; only false authorizes fresh delivery side effects. */
1004
+ replayed?: boolean;
852
1005
  }
853
1006
  interface ApplicationTransitionPayload {
854
1007
  to: ApplicationStatus;
@@ -963,6 +1116,12 @@ interface DuesCreatePayload {
963
1116
  amount: number;
964
1117
  paymentMethod?: string;
965
1118
  duesCollectionId?: string;
1119
+ /**
1120
+ * ADR-132: only checks that `duesCollectionId` belongs to this event (or to `year` with no
1121
+ * event). Both transports read this spelling.
1122
+ */
1123
+ eventId?: string;
1124
+ year?: number;
966
1125
  }
967
1126
  interface DuesCreateResponse {
968
1127
  paymentId: string;
@@ -1155,27 +1314,30 @@ interface UpsertPackingCampItemInput {
1155
1314
  notes?: string | null;
1156
1315
  sortOrder?: number;
1157
1316
  }
1158
- /** Active-year allocation summary. Year is always the org's active camp year. */
1317
+ /**
1318
+ * Allocation summary for one scope (ADR-132). `year` is the camp-year label; `eventId` is the event
1319
+ * the rows belong to, or null on the legacy annual path.
1320
+ */
1159
1321
  interface SapAllocation {
1160
1322
  year: number;
1323
+ eventId: string | null;
1161
1324
  totalAllocated: number;
1162
1325
  notes: string | null;
1163
1326
  totalAssigned: number;
1164
1327
  }
1165
- interface UpdateSapAllocationInput {
1166
- year?: number;
1328
+ interface UpdateSapAllocationInput extends EventScopeParams {
1167
1329
  totalAllocated: number;
1168
1330
  notes?: string | null;
1169
1331
  }
1170
1332
  interface SapDayAllocation {
1171
1333
  id: string;
1172
1334
  year: number;
1335
+ eventId: string | null;
1173
1336
  accessDate: string;
1174
1337
  slotsAvailable: number;
1175
1338
  notes: string | null;
1176
1339
  }
1177
- interface UpsertSapDayAllocationInput {
1178
- year?: number;
1340
+ interface UpsertSapDayAllocationInput extends EventScopeParams {
1179
1341
  accessDate: string;
1180
1342
  slotsAvailable: number;
1181
1343
  notes?: string | null;
@@ -1184,14 +1346,15 @@ interface SapAssignment {
1184
1346
  id: string;
1185
1347
  userId: string;
1186
1348
  year: number;
1349
+ eventId: string | null;
1187
1350
  sapNumber: string | null;
1188
1351
  vehicleDescription: string | null;
1189
1352
  licensePlate: string | null;
1190
1353
  arrivalDate: string | null;
1191
1354
  notes: string | null;
1192
1355
  }
1193
- interface CreateSapAssignmentInput {
1194
- year?: number;
1356
+ /** With an event scope, `userId` must be a participant of that event. */
1357
+ interface CreateSapAssignmentInput extends EventScopeParams {
1195
1358
  userId: string;
1196
1359
  sapNumber?: string | null;
1197
1360
  vehicleDescription?: string | null;
@@ -1199,7 +1362,8 @@ interface CreateSapAssignmentInput {
1199
1362
  arrivalDate?: string | null;
1200
1363
  notes?: string | null;
1201
1364
  }
1202
- interface UpdateSapAssignmentInput {
1365
+ /** A scope, when sent, must match the assignment's own event or year. */
1366
+ interface UpdateSapAssignmentInput extends EventScopeParams {
1203
1367
  assignmentId: string;
1204
1368
  sapNumber?: string | null;
1205
1369
  vehicleDescription?: string | null;
@@ -1291,8 +1455,10 @@ interface BikeRentalInterestedMember {
1291
1455
  unmatchable: boolean;
1292
1456
  }
1293
1457
  interface BikeRentalInterestedNotReservedResponse {
1294
- /** Active camp year; the calendar year when no camp year is active. */
1458
+ /** Camp year of the list; for an event, its start year. */
1295
1459
  year: number;
1460
+ /** Event the list is for; null on the annual path. */
1461
+ eventId: string | null;
1296
1462
  items: BikeRentalInterestedMember[];
1297
1463
  }
1298
1464
  /** Email template registry entry (PLA-1265). */
@@ -1352,6 +1518,8 @@ interface Meeting {
1352
1518
  id: string;
1353
1519
  orgId: string;
1354
1520
  year: number;
1521
+ /** Canonical event the meeting belongs to (ADR-132); null for an annual camp meeting. */
1522
+ eventId?: string | null;
1355
1523
  title: string;
1356
1524
  description: string | null;
1357
1525
  isMandatory: boolean;
@@ -1360,7 +1528,8 @@ interface Meeting {
1360
1528
  createdAt: string;
1361
1529
  dateOptions: MeetingDateOption[];
1362
1530
  }
1363
- interface CreateMeetingInput {
1531
+ /** With neither `year` nor `eventId`, the meeting joins the active camp year (ADR-132). */
1532
+ interface CreateMeetingInput extends EventScopeParams {
1364
1533
  notifyMembers?: boolean;
1365
1534
  title: string;
1366
1535
  description?: string | null;
@@ -1381,7 +1550,8 @@ interface Scholarship {
1381
1550
  id: string;
1382
1551
  orgId: string;
1383
1552
  userId: string;
1384
- year: number;
1553
+ eventId: string | null;
1554
+ year: number | null;
1385
1555
  promoCode: string;
1386
1556
  discountAmount: string;
1387
1557
  reason: string | null;
@@ -1390,15 +1560,29 @@ interface Scholarship {
1390
1560
  discountCodeId: string | null;
1391
1561
  }
1392
1562
  interface CreateScholarshipInput {
1563
+ /**
1564
+ * Givebutter-managed code. Scoped like any create: on an event it maps to the event's Base Dues
1565
+ * tier and needs a published event the member takes part in (else 409 CONFLICT).
1566
+ */
1393
1567
  providerManaged?: boolean;
1394
1568
  userId: string;
1395
1569
  promoCode: string;
1396
1570
  discountAmount: number;
1397
1571
  reason?: string;
1572
+ /**
1573
+ * Legacy camp year (ADR-132). A year with one event creates an event scholarship; a year with
1574
+ * several is 409 `EVENT_REQUIRED`. With neither field, the camp's configured active year.
1575
+ */
1398
1576
  year?: number;
1577
+ /** Canonical event ID. When sent with `year`, both must agree (else 400). */
1578
+ eventId?: string;
1399
1579
  }
1400
1580
  type TicketStatus = "have_ticket" | "need_ticket" | "step_enrolled" | "low_income_approved";
1401
1581
  interface AdminTicketRow extends Ticket {
1582
+ /** Event rows: the participation status (e.g. `confirmed`, `pending`). Null for annual rows. */
1583
+ participationStatus: string | null;
1584
+ /** Event rows: the participation's attendance response. Null for annual rows. */
1585
+ attendanceResponse: string | null;
1402
1586
  vehiclePassStatus: VehiclePassStatus | null;
1403
1587
  vehiclePassConfirmation: string | null;
1404
1588
  member: {
@@ -1408,10 +1592,13 @@ interface AdminTicketRow extends Ticket {
1408
1592
  } | null;
1409
1593
  }
1410
1594
  interface Ticket {
1595
+ /** Annual rows: the member_camp_years id (usable with `update`). Event rows: the event participation id. */
1411
1596
  id: string;
1412
1597
  orgId: string;
1413
1598
  userId: string;
1414
1599
  year: number;
1600
+ /** The event this row belongs to; null for an annual row (ADR-132). */
1601
+ eventId: string | null;
1415
1602
  ticketStatus: string | null;
1416
1603
  ticketConfirmationNumber: string | null;
1417
1604
  ticketNotes: string | null;
@@ -1423,10 +1610,13 @@ interface TicketUpdateInput {
1423
1610
  }
1424
1611
  type VehiclePassStatus = "need_pass" | "have_pass" | "not_needed";
1425
1612
  interface VehiclePass {
1613
+ /** Annual rows: the member_camp_years id (usable with `update`). Event rows: the event participation id. */
1426
1614
  id: string;
1427
1615
  orgId: string;
1428
1616
  userId: string;
1429
1617
  year: number;
1618
+ /** The event this row belongs to; null for an annual row (ADR-132). */
1619
+ eventId: string | null;
1430
1620
  vehiclePassStatus: VehiclePassStatus | null;
1431
1621
  vehiclePassConfirmation: string | null;
1432
1622
  }
@@ -1496,6 +1686,28 @@ interface MemberBootstrap {
1496
1686
  externalUrl: string | null;
1497
1687
  }>;
1498
1688
  }
1689
+ /** Acting member's dues flags and payment history for one event or camp year (ADR-132). */
1690
+ interface MemberPaymentsOverview {
1691
+ year: number;
1692
+ /** The event read, or null on the annual path. */
1693
+ eventId: string | null;
1694
+ duesStatus: {
1695
+ hasPaidBaseDues: boolean;
1696
+ hasPaidRvDues: boolean;
1697
+ ownsRvShelter: boolean;
1698
+ rvAmperage: number | null;
1699
+ rvType: string | null;
1700
+ totalPaid: number;
1701
+ };
1702
+ payments: Array<{
1703
+ id: string;
1704
+ amount: number;
1705
+ paymentMethod: string | null;
1706
+ paymentStatus: string | null;
1707
+ paymentDate: string | null;
1708
+ }>;
1709
+ donationWidgetId: string | null;
1710
+ }
1499
1711
  interface MemberDashboard {
1500
1712
  year: number;
1501
1713
  profile: MemberSelfProfile;
@@ -1622,7 +1834,7 @@ type ShiftAdminOperation = {
1622
1834
  } | {
1623
1835
  action: "delete_type";
1624
1836
  id: string;
1625
- } | {
1837
+ } | ({
1626
1838
  action: "create_shift";
1627
1839
  shiftTypeId: string;
1628
1840
  shiftDate: string;
@@ -1630,7 +1842,7 @@ type ShiftAdminOperation = {
1630
1842
  endTime: string;
1631
1843
  maxSlots: number;
1632
1844
  notes?: string;
1633
- } | {
1845
+ } & EventScopeParams) | {
1634
1846
  action: "update_shift";
1635
1847
  id: string;
1636
1848
  maxSlots?: number;
@@ -1640,21 +1852,21 @@ type ShiftAdminOperation = {
1640
1852
  } | {
1641
1853
  action: "delete_shift";
1642
1854
  id: string;
1643
- } | {
1855
+ } | ({
1644
1856
  action: "bulk_create";
1645
1857
  shiftTypeId: string;
1646
1858
  dates: string[];
1647
1859
  startTime: string;
1648
1860
  endTime: string;
1649
1861
  maxSlots: number;
1650
- } | {
1862
+ } & EventScopeParams) | ({
1651
1863
  action: "clear_day";
1652
1864
  date: string;
1653
- } | {
1865
+ } & EventScopeParams) | ({
1654
1866
  action: "copy_day";
1655
1867
  sourceDate: string;
1656
1868
  targetDate: string;
1657
- } | {
1869
+ } & EventScopeParams) | {
1658
1870
  action: "remove_signup";
1659
1871
  id: string;
1660
1872
  } | {
@@ -1757,9 +1969,9 @@ type ShiftAdminWorkflow = {
1757
1969
  shiftId: string;
1758
1970
  shelterId: string;
1759
1971
  forceAssign?: boolean;
1760
- } | {
1972
+ } | ({
1761
1973
  action: "publish";
1762
- };
1974
+ } & EventScopeParams);
1763
1975
  interface ShiftAdminWorkflowResult {
1764
1976
  assignedCount?: number;
1765
1977
  skippedCount?: number;
@@ -1769,6 +1981,8 @@ interface ShiftAdminWorkflowResult {
1769
1981
  }
1770
1982
  interface ShiftPlannerData {
1771
1983
  year: number;
1984
+ /** Resolved event, or null on the annual path (ADR-132). */
1985
+ eventId: string | null;
1772
1986
  members: Array<{
1773
1987
  id: string;
1774
1988
  name: string;
@@ -1928,6 +2142,10 @@ interface MemberDocumentPage {
1928
2142
  }>;
1929
2143
  }
1930
2144
  interface MemberShiftView {
2145
+ /** Resolved scope year (ADR-132). */
2146
+ year: number;
2147
+ /** Resolved event, or null on the annual path (ADR-132). */
2148
+ eventId: string | null;
1931
2149
  arrivalDate: string | null;
1932
2150
  departureDate: string | null;
1933
2151
  shifts: Array<{
@@ -1941,7 +2159,11 @@ interface MemberShiftView {
1941
2159
  coworkers: string[];
1942
2160
  }>;
1943
2161
  }
1944
- type AdminShelterOperation = {
2162
+ /**
2163
+ * Every operation takes an ADR-132 scope. With an event, the shelter or assignment must belong to it
2164
+ * and placed members must be confirmed, attending participants; without one, annual rows only.
2165
+ */
2166
+ type AdminShelterOperation = EventScopeParams & ({
1945
2167
  action: "approve" | "remove";
1946
2168
  assignmentId: string;
1947
2169
  } | {
@@ -1973,8 +2195,12 @@ type AdminShelterOperation = {
1973
2195
  } | {
1974
2196
  action: "delete";
1975
2197
  shelterId: string;
1976
- };
2198
+ });
1977
2199
  interface MobileShifts {
2200
+ /** Resolved scope year (ADR-132). */
2201
+ year: number;
2202
+ /** Resolved event, or null on the annual path (ADR-132). */
2203
+ eventId: string | null;
1978
2204
  shifts: Array<{
1979
2205
  id: string;
1980
2206
  date: string;
@@ -2001,6 +2227,8 @@ interface MobileShifts {
2001
2227
  }
2002
2228
  interface AdminCampSettings {
2003
2229
  year: number;
2230
+ /** The event read, or null on the annual path (ADR-132). */
2231
+ eventId: string | null;
2004
2232
  slotLimits: Record<string, number>;
2005
2233
  feeTiers: Array<{
2006
2234
  id: string;
@@ -2023,12 +2251,12 @@ interface AdminCampSettings {
2023
2251
  type CampSettingsOperation = {
2024
2252
  action: "slot_limits";
2025
2253
  limits: Record<string, number>;
2026
- } | {
2254
+ } | ({
2027
2255
  action: "fee_tier";
2028
2256
  id: string;
2029
2257
  displayName: string;
2030
2258
  amount: number;
2031
- } | {
2259
+ } & EventScopeParams) | {
2032
2260
  action: "reminder";
2033
2261
  type: "payment" | "onboarding" | "documents" | "logistics_undecided" | "photo_avatar" | "photo_fullsize" | "attendance_nudge";
2034
2262
  enabled: boolean;
@@ -2073,30 +2301,31 @@ interface AdminBikeOperationResult {
2073
2301
  sent?: number;
2074
2302
  failed?: number;
2075
2303
  }
2076
- type AdminPaymentOperation = {
2304
+ type AdminPaymentOperation = ({
2077
2305
  action: "manual_payment";
2078
2306
  payerId: string;
2079
2307
  paidForUserId?: string | null;
2080
2308
  amount: number;
2081
2309
  method: string;
2082
2310
  notes?: string;
2083
- year?: number;
2084
- } | {
2311
+ } & EventScopeParams) |
2312
+ /** The fee tier decides the scope; a sent `eventId`/`year` must agree with it. */
2313
+ ({
2085
2314
  action: "assign_fee";
2086
2315
  memberId: string;
2087
2316
  feeTierId: string;
2088
2317
  feeType: "base" | "addon";
2089
- } | {
2318
+ } & EventScopeParams) | {
2090
2319
  action: "refund";
2091
2320
  paymentId: string;
2092
2321
  } | {
2093
2322
  action: "link_refund";
2094
2323
  refundEventId: string;
2095
2324
  paymentId: string;
2096
- } | {
2325
+ } | ({
2097
2326
  action: "nudge";
2098
2327
  memberIds: string[];
2099
- };
2328
+ } & EventScopeParams);
2100
2329
  interface AdminPaymentOperationResult {
2101
2330
  success: true;
2102
2331
  paymentId?: string;
@@ -2143,6 +2372,11 @@ interface SchedulingAdminResult {
2143
2372
  success?: boolean;
2144
2373
  }
2145
2374
  interface SchedulingAdminSettings {
2375
+ /** Missing on older servers; an empty array means no active camp booking links. */
2376
+ bookingLinks?: {
2377
+ id: string;
2378
+ title: string;
2379
+ }[];
2146
2380
  googleConnected: boolean;
2147
2381
  interviewer: {
2148
2382
  id: string;
@@ -2208,6 +2442,8 @@ interface AdminImportantDate {
2208
2442
  notifyDaysBefore: number[] | null;
2209
2443
  isSystem: boolean | null;
2210
2444
  slug: string | null;
2445
+ /** Canonical event the date belongs to (ADR-132); null for an annual camp date. */
2446
+ eventId?: string | null;
2211
2447
  }
2212
2448
  interface AdminImportantDateInput {
2213
2449
  title: string;
@@ -2217,9 +2453,12 @@ interface AdminImportantDateInput {
2217
2453
  category: "dues" | "documents" | "tickets" | "event" | "other" | "system";
2218
2454
  notifyDaysBefore: number[];
2219
2455
  }
2220
- type AdminImportantDateOperation = {
2456
+ type AdminImportantDateOperation =
2457
+ /** `eventId` attaches the date to an event the camp owns (ADR-132); without it, an annual date. */
2458
+ {
2221
2459
  action: "create";
2222
2460
  input: AdminImportantDateInput;
2461
+ eventId?: string;
2223
2462
  } | {
2224
2463
  action: "update";
2225
2464
  id: string;
@@ -2230,6 +2469,8 @@ type AdminImportantDateOperation = {
2230
2469
  };
2231
2470
  interface AdminPaymentsPage {
2232
2471
  year: number;
2472
+ /** The event read, or null on the annual path (ADR-132). */
2473
+ eventId: string | null;
2233
2474
  transactions: {
2234
2475
  id: string;
2235
2476
  userId: string | null;
@@ -2280,14 +2521,17 @@ interface ScholarshipStats {
2280
2521
  }
2281
2522
  interface AdminScholarshipsPage {
2282
2523
  year: number;
2524
+ /** The event read, or null on the annual path (ADR-132). */
2525
+ eventId: string | null;
2283
2526
  scholarships: {
2284
2527
  id: string;
2285
2528
  userId: string;
2529
+ eventId: string | null;
2286
2530
  promoCode: string;
2287
2531
  discountAmount: string;
2288
2532
  reason: string | null;
2289
2533
  status: ScholarshipStatus;
2290
- year: number;
2534
+ year: number | null;
2291
2535
  usedAt: string | null;
2292
2536
  createdAt: string | null;
2293
2537
  profile: {
@@ -2344,14 +2588,21 @@ type AdminMemberOperation = {
2344
2588
  action: "attendance";
2345
2589
  profileId: string;
2346
2590
  attendanceResponse: "attending" | "not_attending" | "undecided" | null;
2347
- /** Defaults to the active camp year. An explicit year must already have a camp year row. */
2591
+ /** Defaults to the active camp year. An explicit year with no event must already have a camp year row. */
2348
2592
  year?: number;
2593
+ /**
2594
+ * Edits this event's participation (ADR-132). 404 `PARTICIPATION_NOT_FOUND` when the member has
2595
+ * none; an admin edit never creates one.
2596
+ */
2597
+ eventId?: string;
2349
2598
  } | {
2350
2599
  action: "profile";
2351
2600
  profileId: string;
2352
2601
  profile?: MemberProfileUpdate;
2353
2602
  campYear?: Omit<MemberTravelUpdate, "attendanceResponse">;
2354
2603
  year?: number;
2604
+ /** Edits this event's participation; see `attendance`. */
2605
+ eventId?: string;
2355
2606
  } | {
2356
2607
  action: "delete";
2357
2608
  profileId: string;
@@ -2362,8 +2613,13 @@ type AdminMemberOperation = {
2362
2613
  profileId: string;
2363
2614
  wantsBikeRental: boolean;
2364
2615
  bikeTypePreference: "ebike" | "pedal" | null;
2365
- /** Defaults to the active camp year. An explicit year must already have a camp year row. */
2616
+ /** Defaults to the active camp year. An explicit year with no event must already have a camp year row. */
2366
2617
  year?: number;
2618
+ /**
2619
+ * Edits this event's participation (ADR-132). 404 `PARTICIPATION_NOT_FOUND` when the member has
2620
+ * none; an admin edit never creates one.
2621
+ */
2622
+ eventId?: string;
2367
2623
  } | {
2368
2624
  action: "summer_rsvp";
2369
2625
  profileId: string;
@@ -2435,6 +2691,8 @@ type BookkeepingAdminOperation = {
2435
2691
  };
2436
2692
  interface AdminGivebutterWidgets {
2437
2693
  year: number;
2694
+ /** The event read, or null on the annual path (ADR-132). */
2695
+ eventId: string | null;
2438
2696
  widgets: {
2439
2697
  id: string;
2440
2698
  category: string;
@@ -2442,16 +2700,17 @@ interface AdminGivebutterWidgets {
2442
2700
  widgetId: string;
2443
2701
  label: string | null;
2444
2702
  isActive: boolean;
2445
- year: number;
2703
+ /** Null for an event widget. */
2704
+ year: number | null;
2446
2705
  }[];
2447
2706
  }
2448
- type AdminGivebutterWidgetOperation = {
2707
+ type AdminGivebutterWidgetOperation = ({
2449
2708
  action: "upsert";
2450
2709
  category: "dues" | "rv_addon" | "donation";
2451
2710
  tierKey: string;
2452
2711
  widgetId: string;
2453
2712
  label: string | null;
2454
- } | {
2713
+ } & EventScopeParams) | {
2455
2714
  action: "delete";
2456
2715
  id: string;
2457
2716
  } | {
@@ -2593,12 +2852,12 @@ interface AdminGivebutterCatalog {
2593
2852
  }
2594
2853
  type AdminGivebutterCatalogOperation = {
2595
2854
  action: "sync";
2596
- } | {
2855
+ } | ({
2597
2856
  action: "set_active_tier";
2598
2857
  tier: "base_dues";
2599
2858
  campaignId: number;
2600
2859
  itemId: number;
2601
- };
2860
+ } & EventScopeParams);
2602
2861
  type PackingContainerType = "hdx_tote" | "suitcase" | "box" | "bag" | "other";
2603
2862
  interface PackingContainer {
2604
2863
  id: string;
@@ -2770,6 +3029,14 @@ interface ClientOptions {
2770
3029
  */
2771
3030
  memberToken?: string;
2772
3031
  }
3032
+ /**
3033
+ * Methods that took only `opts` before gaining scope params still read a `signal` from their first
3034
+ * argument, so `method({ signal })` keeps working.
3035
+ */
3036
+ interface LegacySignalOption {
3037
+ /** @deprecated Pass `signal` in the second argument. */
3038
+ signal?: AbortSignal;
3039
+ }
2773
3040
  export declare class PlayaOSClient {
2774
3041
  private readonly baseUrl;
2775
3042
  private readonly embedBaseUrl;
@@ -2839,8 +3106,13 @@ export declare class PlayaOSClient {
2839
3106
  cancelled: true;
2840
3107
  }>;
2841
3108
  };
3109
+ /**
3110
+ * Finance configuration (ADR-129) is scoped by `eventId` or `year` (ADR-132): reads default to the
3111
+ * configured active camp year; `fee_tier`, widget `upsert` and `set_active_tier` write into the scope
3112
+ * sent. Other operations are organization-wide.
3113
+ */
2842
3114
  readonly campSettings: {
2843
- catalog: (opts?: {
3115
+ catalog: (params?: EventScopeParams & LegacySignalOption, opts?: {
2844
3116
  signal?: AbortSignal;
2845
3117
  }) => Promise<AdminGivebutterCatalog>;
2846
3118
  catalogOperation: (payload: AdminGivebutterCatalogOperation, opts?: {
@@ -2850,7 +3122,7 @@ export declare class PlayaOSClient {
2850
3122
  campaigns?: number;
2851
3123
  items?: number;
2852
3124
  }>;
2853
- widgets: (opts?: {
3125
+ widgets: (params?: EventScopeParams & LegacySignalOption, opts?: {
2854
3126
  signal?: AbortSignal;
2855
3127
  }) => Promise<AdminGivebutterWidgets>;
2856
3128
  widgetOperation: (payload: AdminGivebutterWidgetOperation, opts?: {
@@ -2858,7 +3130,7 @@ export declare class PlayaOSClient {
2858
3130
  }) => Promise<{
2859
3131
  success: true;
2860
3132
  }>;
2861
- admin: (opts?: {
3133
+ admin: (params?: EventScopeParams & LegacySignalOption, opts?: {
2862
3134
  signal?: AbortSignal;
2863
3135
  }) => Promise<AdminCampSettings>;
2864
3136
  update: (payload: CampSettingsOperation, opts?: {
@@ -2877,14 +3149,17 @@ export declare class PlayaOSClient {
2877
3149
  adminOperation: (payload: SchedulingAdminOperation, opts?: {
2878
3150
  signal?: AbortSignal;
2879
3151
  }) => Promise<SchedulingAdminResult>;
2880
- feed: (interviewerId: string, token: string, opts?: {
3152
+ /**
3153
+ * Calendar subscription read. Scope with `eventId` or `year` (ADR-132); with neither, the
3154
+ * active camp year. A year matching several events fails with 409 EVENT_REQUIRED.
3155
+ */
3156
+ feed: (interviewerId: string, token: string, params?: EventScopeParams & LegacySignalOption, opts?: {
2881
3157
  signal?: AbortSignal;
2882
3158
  }) => Promise<InterviewFeedBooking[]>;
2883
3159
  };
2884
3160
  readonly members: {
2885
- adminExport: (params: {
2886
- year: number;
2887
- }, opts?: {
3161
+ /** Exports one event, or a year with one event (ADR-132); with neither, the active camp year. */
3162
+ adminExport: (params?: EventScopeParams, opts?: {
2888
3163
  signal?: AbortSignal;
2889
3164
  }) => Promise<{
2890
3165
  data: AdminMemberExportRow[];
@@ -2899,9 +3174,8 @@ export declare class PlayaOSClient {
2899
3174
  adminImportOperation: (payload: AdminImportOperation, opts?: {
2900
3175
  signal?: AbortSignal;
2901
3176
  }) => Promise<AdminImportResult>;
2902
- adminDetail: (id: string, params?: {
2903
- year?: number;
2904
- }, opts?: {
3177
+ /** On an event, `campYear` holds that event's participation (ADR-132). */
3178
+ adminDetail: (id: string, params?: EventScopeParams, opts?: {
2905
3179
  signal?: AbortSignal;
2906
3180
  }) => Promise<MemberProfileDetails>;
2907
3181
  adminHistory: (id: string, opts?: {
@@ -2995,6 +3269,20 @@ export declare class PlayaOSClient {
2995
3269
  dashboard: (opts?: {
2996
3270
  signal?: AbortSignal;
2997
3271
  }) => Promise<MemberDashboard>;
3272
+ /**
3273
+ * Always the acting member, including admins; requires a member token and members:read scope.
3274
+ * Without a scope, the configured active camp year (ADR-132).
3275
+ */
3276
+ paymentOverview: (params?: EventScopeParams & LegacySignalOption, opts?: {
3277
+ signal?: AbortSignal;
3278
+ }) => Promise<MemberPaymentsOverview>;
3279
+ /** Acting member's original photo only; missing originals return 404, never an avatar fallback. */
3280
+ selfPhotoDownloadUrl: (opts?: {
3281
+ signal?: AbortSignal;
3282
+ }) => Promise<{
3283
+ url: string;
3284
+ fileName: string;
3285
+ }>;
2998
3286
  /** Presigned profile-photo upload (PLA-1263). PUT the bytes, then setPhoto. */
2999
3287
  createPhotoUploadUrl: (payload: {
3000
3288
  contentType: "image/jpeg" | "image/png" | "image/webp";
@@ -3060,6 +3348,8 @@ export declare class PlayaOSClient {
3060
3348
  sortBy?: "name" | "email" | "role" | "status" | "createdAt";
3061
3349
  sortOrder?: "asc" | "desc";
3062
3350
  attending?: "true" | "false";
3351
+ /** Canonical event to scope `attending` to; alone, lists that event's participants. */
3352
+ eventId?: string;
3063
3353
  } & PaginationParams & {
3064
3354
  /** Raw row offset — the members table's pager. Mutually exclusive with `cursor`. */
3065
3355
  offset?: number;
@@ -3161,10 +3451,11 @@ export declare class PlayaOSClient {
3161
3451
  }) => Promise<SummerCampRsvp>;
3162
3452
  };
3163
3453
  readonly applications: {
3164
- list: (params?: {
3454
+ list: (
3455
+ /** `eventId` or `year` narrows to one event, or a year with no event (ADR-132); neither lists every year. */
3456
+ params?: {
3165
3457
  status?: ApplicationStatus;
3166
- year?: number;
3167
- } & PaginationParams, opts?: {
3458
+ } & EventScopeParams & PaginationParams, opts?: {
3168
3459
  signal?: AbortSignal;
3169
3460
  }) => Promise<Paginated<Application>>;
3170
3461
  create: (payload: ApplicationCreatePayload, opts?: {
@@ -3200,9 +3491,8 @@ export declare class PlayaOSClient {
3200
3491
  readonly dues: {
3201
3492
  list: (params?: {
3202
3493
  userId?: string;
3203
- year?: number;
3204
3494
  paymentStatus?: "unpaid" | "partial" | "paid";
3205
- } & PaginationParams, opts?: {
3495
+ } & EventScopeParams & PaginationParams, opts?: {
3206
3496
  signal?: AbortSignal;
3207
3497
  }) => Promise<Paginated<DuesStatus>>;
3208
3498
  };
@@ -3218,21 +3508,22 @@ export declare class PlayaOSClient {
3218
3508
  }) => Promise<{
3219
3509
  success: true;
3220
3510
  }>;
3511
+ /** Without a scope, the configured active camp year (ADR-132). */
3221
3512
  mobile: (params: {
3222
3513
  type: "available" | "my-shifts";
3223
3514
  date: string;
3224
- }, opts?: {
3515
+ } & EventScopeParams, opts?: {
3225
3516
  signal?: AbortSignal;
3226
3517
  }) => Promise<MobileShifts>;
3227
- memberView: (opts?: {
3518
+ /** Without a scope, the configured active camp year (ADR-132). */
3519
+ memberView: (params?: EventScopeParams & LegacySignalOption, opts?: {
3228
3520
  signal?: AbortSignal;
3229
3521
  }) => Promise<MemberShiftView>;
3230
3522
  adminWorkflow: (payload: ShiftAdminWorkflow, opts?: {
3231
3523
  signal?: AbortSignal;
3232
3524
  }) => Promise<ShiftAdminWorkflowResult>;
3233
- planner: (params?: {
3234
- year?: number;
3235
- }, opts?: {
3525
+ /** Without a scope, the configured active camp year (ADR-132). */
3526
+ planner: (params?: EventScopeParams, opts?: {
3236
3527
  signal?: AbortSignal;
3237
3528
  }) => Promise<ShiftPlannerData>;
3238
3529
  adminOperation: (payload: ShiftAdminOperation, opts?: {
@@ -3241,18 +3532,17 @@ export declare class PlayaOSClient {
3241
3532
  adminTypes: (opts?: {
3242
3533
  signal?: AbortSignal;
3243
3534
  }) => Promise<AdminShiftType[]>;
3244
- adminList: (params?: {
3245
- year?: number;
3246
- } & PaginationParams, opts?: {
3535
+ /** With neither `year` nor `eventId`, every shift in the org (documented ADR-132 exception). */
3536
+ adminList: (params?: EventScopeParams & PaginationParams, opts?: {
3247
3537
  signal?: AbortSignal;
3248
3538
  }) => Promise<Paginated<AdminShift>>;
3539
+ /** With neither `year` nor `eventId`, every shift in the org (documented ADR-132 exception). */
3249
3540
  list: (params?: {
3250
- year?: number;
3251
3541
  fromDate?: string;
3252
3542
  toDate?: string;
3253
3543
  publishedOnly?: boolean;
3254
3544
  openOnly?: boolean;
3255
- } & PaginationParams, opts?: {
3545
+ } & EventScopeParams & PaginationParams, opts?: {
3256
3546
  signal?: AbortSignal;
3257
3547
  }) => Promise<Paginated<Shift>>;
3258
3548
  };
@@ -3267,9 +3557,7 @@ export declare class PlayaOSClient {
3267
3557
  }) => Promise<CommitmentsListResponse>;
3268
3558
  };
3269
3559
  readonly payments: {
3270
- adminPage: (params?: {
3271
- year?: number;
3272
- }, opts?: {
3560
+ adminPage: (params?: EventScopeParams, opts?: {
3273
3561
  signal?: AbortSignal;
3274
3562
  }) => Promise<AdminPaymentsPage>;
3275
3563
  adminOperation: (payload: AdminPaymentOperation, opts?: {
@@ -3287,13 +3575,13 @@ export declare class PlayaOSClient {
3287
3575
  paymentDate: string | null;
3288
3576
  paymentMethod: string | null;
3289
3577
  }>>;
3290
- adminSummary: (opts?: {
3578
+ adminSummary: (params?: EventScopeParams & LegacySignalOption, opts?: {
3291
3579
  signal?: AbortSignal;
3292
3580
  }) => Promise<AdminPaymentSummary>;
3293
3581
  exportMonarch: (params?: {
3294
3582
  from?: string;
3295
3583
  to?: string;
3296
- }, opts?: {
3584
+ } & EventScopeParams, opts?: {
3297
3585
  signal?: AbortSignal;
3298
3586
  }) => Promise<{
3299
3587
  csv: string;
@@ -3335,40 +3623,40 @@ export declare class PlayaOSClient {
3335
3623
  };
3336
3624
  /** Logistics dashboard reads (PLA-1342): rollup, daily headcount, unsure dates, area breakdowns. */
3337
3625
  readonly logistics: {
3338
- summary: (params: {
3339
- year: number;
3340
- }, opts?: {
3626
+ /** Requires `eventId` or `year` (ADR-132); an ambiguous year rejects with EVENT_REQUIRED. */
3627
+ summary: (params: EventScopeParams, opts?: {
3341
3628
  signal?: AbortSignal;
3342
3629
  }) => Promise<LogisticsSummary>;
3343
- headcount: (params?: PaginationParams, opts?: {
3630
+ /** Without a scope, the org's active camp year. */
3631
+ headcount: (params?: EventScopeParams & PaginationParams, opts?: {
3344
3632
  signal?: AbortSignal;
3345
3633
  }) => Promise<Paginated<DailyHeadcount>>;
3346
- unsureDates: (params?: {
3347
- year?: number;
3348
- } & PaginationParams, opts?: {
3634
+ /** Without a scope, every camp year. */
3635
+ unsureDates: (params?: EventScopeParams & PaginationParams, opts?: {
3349
3636
  signal?: AbortSignal;
3350
3637
  }) => Promise<Paginated<UnsureDateMember>>;
3351
- breakdowns: (opts?: {
3638
+ /** Without a scope, the org's active camp year. */
3639
+ breakdowns: (params?: EventScopeParams & LegacySignalOption, opts?: {
3352
3640
  signal?: AbortSignal;
3353
3641
  }) => Promise<LogisticsBreakdowns>;
3354
3642
  };
3355
3643
  /** Admin reports (PLA-1343): dashboard rollup + build/strike availability. */
3356
3644
  readonly reports: {
3645
+ /** Requires `eventId` or `year` (ADR-132); an ambiguous year rejects with EVENT_REQUIRED. */
3357
3646
  dashboard: (params: {
3358
- year: number;
3359
3647
  asOf: string;
3360
- }, opts?: {
3648
+ } & EventScopeParams, opts?: {
3361
3649
  signal?: AbortSignal;
3362
3650
  }) => Promise<DashboardMetrics>;
3363
- buildStrike: (params: {
3364
- year: number;
3365
- }, opts?: {
3651
+ /** Requires `eventId` or `year` (ADR-132); an ambiguous year rejects with EVENT_REQUIRED. */
3652
+ buildStrike: (params: EventScopeParams, opts?: {
3366
3653
  signal?: AbortSignal;
3367
3654
  }) => Promise<BuildStrikeReportRow[]>;
3368
3655
  };
3369
3656
  /** Bookkeeping reads (PLA-1345): camp-year list + ops-binder export preview. */
3370
3657
  readonly bookkeeping: {
3371
- syncGoogleSheets: (opts?: {
3658
+ /** Without a scope, the camp's active year (ADR-132). */
3659
+ syncGoogleSheets: (params?: EventScopeParams & LegacySignalOption, opts?: {
3372
3660
  signal?: AbortSignal;
3373
3661
  }) => Promise<SheetsSyncResult>;
3374
3662
  adminOperation: (payload: BookkeepingAdminOperation, opts?: {
@@ -3379,9 +3667,12 @@ export declare class PlayaOSClient {
3379
3667
  years: (opts?: {
3380
3668
  signal?: AbortSignal;
3381
3669
  }) => Promise<CampYearWithCounts[]>;
3382
- exportPreview: (params?: {
3383
- year?: number;
3384
- }, opts?: {
3670
+ /** Requires `eventId` or `year` (ADR-132); an ambiguous year rejects with EVENT_REQUIRED. */
3671
+ summary: (params: EventScopeParams, opts?: {
3672
+ signal?: AbortSignal;
3673
+ }) => Promise<BookkeepingSummary>;
3674
+ /** Without a scope, the org's operational year. */
3675
+ exportPreview: (params?: EventScopeParams, opts?: {
3385
3676
  signal?: AbortSignal;
3386
3677
  }) => Promise<BookkeepingExportPreview>;
3387
3678
  };
@@ -3436,12 +3727,12 @@ export declare class PlayaOSClient {
3436
3727
  }) => Promise<NotificationLog[]>;
3437
3728
  };
3438
3729
  readonly documents: {
3439
- memberPage: (params?: {
3440
- year?: number;
3441
- }, opts?: {
3730
+ /** Scope with `eventId` or `year` (ADR-132); with neither, the active camp year. */
3731
+ memberPage: (params?: EventScopeParams, opts?: {
3442
3732
  signal?: AbortSignal;
3443
3733
  }) => Promise<MemberDocumentPage>;
3444
- create: (payload: DocumentWriteInput, opts?: {
3734
+ /** `eventId` attaches the document to that event (ADR-132); with neither scope, the active camp year. */
3735
+ create: (payload: DocumentWriteInput & EventScopeParams, opts?: {
3445
3736
  signal?: AbortSignal;
3446
3737
  }) => Promise<CampDocument>;
3447
3738
  update: (id: string, payload: Partial<DocumentWriteInput>, opts?: {
@@ -3499,11 +3790,11 @@ export declare class PlayaOSClient {
3499
3790
  id: string;
3500
3791
  deleted: true;
3501
3792
  }>;
3793
+ /** With `eventId`, only that event's documents (ADR-132); with no scope, every document. */
3502
3794
  list: (params?: {
3503
3795
  type?: string;
3504
- year?: number;
3505
3796
  activeYear?: boolean;
3506
- }, opts?: {
3797
+ } & EventScopeParams, opts?: {
3507
3798
  signal?: AbortSignal;
3508
3799
  }) => Promise<AdminCampDocument[]>;
3509
3800
  get: (id: string, opts?: {
@@ -3549,11 +3840,11 @@ export declare class PlayaOSClient {
3549
3840
  }) => Promise<{
3550
3841
  ok: true;
3551
3842
  }>;
3843
+ /** With `eventId`, only that event's meetings (ADR-132); with no scope, every meeting. */
3552
3844
  list: (params?: {
3553
- year?: number;
3554
3845
  limit?: number;
3555
3846
  cursor?: string;
3556
- }, opts?: {
3847
+ } & EventScopeParams, opts?: {
3557
3848
  signal?: AbortSignal;
3558
3849
  }) => Promise<MeetingListResponse>;
3559
3850
  get: (id: string, opts?: {
@@ -3572,9 +3863,12 @@ export declare class PlayaOSClient {
3572
3863
  }>;
3573
3864
  };
3574
3865
  readonly scholarships: {
3575
- adminPage: (params?: {
3576
- year?: number;
3577
- }, opts?: {
3866
+ /**
3867
+ * Scholarship dashboard for an event or year (ADR-132). A year with one event reads that event;
3868
+ * a year with none reads the annual rows; a year with several fails with 409 `EVENT_REQUIRED`.
3869
+ * With no params, the camp's configured active year (400 when none).
3870
+ */
3871
+ adminPage: (params?: EventScopeParams, opts?: {
3578
3872
  signal?: AbortSignal;
3579
3873
  }) => Promise<AdminScholarshipsPage>;
3580
3874
  refresh: (id: string, opts?: {
@@ -3583,12 +3877,15 @@ export declare class PlayaOSClient {
3583
3877
  givebutterActive: boolean;
3584
3878
  givebutterUsed: number;
3585
3879
  }>;
3586
- stats: (params?: {
3587
- year?: number;
3588
- }, opts?: {
3880
+ /** Scholarship totals for an event or year; same scope rules and 409 `EVENT_REQUIRED` as `adminPage`. */
3881
+ stats: (params?: EventScopeParams, opts?: {
3589
3882
  signal?: AbortSignal;
3590
3883
  }) => Promise<ScholarshipStats>;
3591
- /** Create a scholarship (code + Givebutter sync). Admin-only (PLA-1266). */
3884
+ /**
3885
+ * Create a scholarship (code + Givebutter sync). Admin-only (PLA-1266). A year-only create on a
3886
+ * single-event year writes an event scholarship; an ambiguous year is 409 `EVENT_REQUIRED`
3887
+ * (ADR-132).
3888
+ */
3592
3889
  create: (payload: CreateScholarshipInput, opts?: {
3593
3890
  signal?: AbortSignal;
3594
3891
  }) => Promise<Scholarship>;
@@ -3612,10 +3909,21 @@ export declare class PlayaOSClient {
3612
3909
  upsert: (memberId: string, year: number, payload: TicketUpdateInput, opts?: {
3613
3910
  signal?: AbortSignal;
3614
3911
  }) => Promise<Ticket>;
3615
- /** Admin ticket-page projection; requires ticket, vehicle-pass, and member read scopes. */
3616
- adminList: (params?: {
3912
+ /**
3913
+ * Admin upsert for one event (ADR-132). Never creates a participation: a member with none in
3914
+ * the event fails with 404 `PARTICIPATION_NOT_FOUND`. Pass `year` to label an event with no
3915
+ * start date (400 without one); a `year` that disagrees with a dated event is 400.
3916
+ */
3917
+ upsertForEvent: (memberId: string, eventId: string, payload: TicketUpdateInput, opts?: {
3617
3918
  year?: number;
3618
- } & PaginationParams, opts?: {
3919
+ signal?: AbortSignal;
3920
+ }) => Promise<Ticket>;
3921
+ /**
3922
+ * Admin ticket-page projection; requires ticket, vehicle-pass, and member read scopes. Pass
3923
+ * `eventId` for one event's participations; a year with several events fails with
3924
+ * `EVENT_REQUIRED` (ADR-132).
3925
+ */
3926
+ adminList: (params?: EventScopeParams & PaginationParams, opts?: {
3619
3927
  signal?: AbortSignal;
3620
3928
  }) => Promise<Paginated<AdminTicketRow>>;
3621
3929
  /** Update a member's ticket status/confirmation. Admin-only (PLA-1266). */
@@ -3628,6 +3936,15 @@ export declare class PlayaOSClient {
3628
3936
  upsert: (memberId: string, year: number, payload: VehiclePassUpdateInput, opts?: {
3629
3937
  signal?: AbortSignal;
3630
3938
  }) => Promise<VehiclePass>;
3939
+ /**
3940
+ * Admin upsert for one event (ADR-132). Never creates a participation: a member with none in
3941
+ * the event fails with 404 `PARTICIPATION_NOT_FOUND`. Pass `year` to label an event with no
3942
+ * start date (400 without one); a `year` that disagrees with a dated event is 400.
3943
+ */
3944
+ upsertForEvent: (memberId: string, eventId: string, payload: VehiclePassUpdateInput, opts?: {
3945
+ year?: number;
3946
+ signal?: AbortSignal;
3947
+ }) => Promise<VehiclePass>;
3631
3948
  /** Update a member's vehicle-pass status. Admin-only (PLA-1266). */
3632
3949
  update: (id: string, payload: VehiclePassUpdateInput, opts?: {
3633
3950
  signal?: AbortSignal;
@@ -3641,25 +3958,25 @@ export declare class PlayaOSClient {
3641
3958
  shelterId?: string;
3642
3959
  feesRecalculated?: boolean;
3643
3960
  }>;
3644
- createForMember: (payload: OwnerShelterCreate, opts?: {
3961
+ /** With an event scope, the acting member and any mates must be confirmed, attending participants. */
3962
+ createForMember: (payload: OwnerShelterCreate & EventScopeParams, opts?: {
3645
3963
  signal?: AbortSignal;
3646
3964
  }) => Promise<{
3647
3965
  shelterId: string;
3648
3966
  shareUrl: string | null;
3649
3967
  }>;
3650
- updateForMember: (id: string, payload: OwnerShelterPatch, opts?: {
3968
+ /** A scope, when sent, must match the shelter's own event; without one, annual shelters only. */
3969
+ updateForMember: (id: string, payload: OwnerShelterPatch, params?: EventScopeParams & LegacySignalOption, opts?: {
3651
3970
  signal?: AbortSignal;
3652
3971
  }) => Promise<{
3653
3972
  updated: true;
3654
3973
  }>;
3655
- deleteForMember: (id: string, opts?: {
3974
+ deleteForMember: (id: string, params?: EventScopeParams & LegacySignalOption, opts?: {
3656
3975
  signal?: AbortSignal;
3657
3976
  }) => Promise<{
3658
3977
  shelterType: string;
3659
3978
  }>;
3660
- memberPage: (params?: {
3661
- year?: number;
3662
- }, opts?: {
3979
+ memberPage: (params?: EventScopeParams, opts?: {
3663
3980
  signal?: AbortSignal;
3664
3981
  }) => Promise<MemberShelterPage>;
3665
3982
  searchMembers: (params: {
@@ -3672,12 +3989,12 @@ export declare class PlayaOSClient {
3672
3989
  name: string | null;
3673
3990
  }>;
3674
3991
  }>;
3675
- requestJoin: (id: string, opts?: {
3992
+ requestJoin: (id: string, params?: EventScopeParams & LegacySignalOption, opts?: {
3676
3993
  signal?: AbortSignal;
3677
3994
  }) => Promise<{
3678
3995
  id: string;
3679
3996
  }>;
3680
- inviteCandidates: (id: string, opts?: {
3997
+ inviteCandidates: (id: string, params?: EventScopeParams & LegacySignalOption, opts?: {
3681
3998
  signal?: AbortSignal;
3682
3999
  }) => Promise<{
3683
4000
  data: Array<{
@@ -3707,15 +4024,12 @@ export declare class PlayaOSClient {
3707
4024
  }>;
3708
4025
  requestPayer: (payload: {
3709
4026
  payerUserId: string;
3710
- year?: number;
3711
- }, opts?: {
4027
+ } & EventScopeParams, opts?: {
3712
4028
  signal?: AbortSignal;
3713
4029
  }) => Promise<{
3714
4030
  existingShelterId: string | null;
3715
4031
  }>;
3716
- pendingPayerRequests: (params?: {
3717
- year?: number;
3718
- }, opts?: {
4032
+ pendingPayerRequests: (params?: EventScopeParams, opts?: {
3719
4033
  signal?: AbortSignal;
3720
4034
  }) => Promise<{
3721
4035
  data: Array<{
@@ -3730,48 +4044,49 @@ export declare class PlayaOSClient {
3730
4044
  assignmentId: string;
3731
4045
  approved: boolean;
3732
4046
  }>;
3733
- }, opts?: {
4047
+ } & EventScopeParams, opts?: {
3734
4048
  signal?: AbortSignal;
3735
4049
  }) => Promise<{
3736
4050
  success: true;
3737
4051
  }>;
3738
- /** Admin-only shelter table/map projection; requires members:read and a member token. */
3739
- adminList: (params: {
3740
- year: number;
3741
- } & PaginationParams, opts?: {
4052
+ /**
4053
+ * Admin-only shelter table/map projection; requires members:read and a member token. Send
4054
+ * `eventId` or `year` (ADR-132); a year matching several events is 409 EVENT_REQUIRED.
4055
+ */
4056
+ adminList: (params: EventScopeParams & PaginationParams, opts?: {
3742
4057
  signal?: AbortSignal;
3743
4058
  }) => Promise<Paginated<AdminShelter>>;
3744
4059
  list: (params?: {
3745
4060
  ownerId?: string;
3746
4061
  shelterType?: string;
3747
- year?: number;
3748
- }, opts?: {
4062
+ } & EventScopeParams, opts?: {
3749
4063
  signal?: AbortSignal;
3750
4064
  }) => Promise<Shelter[]>;
3751
- get: (id: string, opts?: {
4065
+ /** Without a scope only annual shelters match; send `eventId` to read an event's shelter. */
4066
+ get: (id: string, params?: EventScopeParams & LegacySignalOption, opts?: {
3752
4067
  signal?: AbortSignal;
3753
4068
  }) => Promise<Shelter>;
3754
- /** Request to join a shelter (member). PLA-1260. */
3755
- join: (shelterId: string, opts?: {
4069
+ /** Request to join a shelter (member). PLA-1260. A scope must match the shelter's event. */
4070
+ join: (shelterId: string, params?: EventScopeParams & LegacySignalOption, opts?: {
3756
4071
  signal?: AbortSignal;
3757
4072
  }) => Promise<{
3758
4073
  id: string;
3759
4074
  }>;
3760
- /** Invite a member to a shelter the acting member owns. PLA-1260. */
3761
- invite: (shelterId: string, inviteeUserId: string, opts?: {
4075
+ /** Invite a member to a shelter the acting member owns. PLA-1260. A scope must match the shelter's event. */
4076
+ invite: (shelterId: string, inviteeUserId: string, params?: EventScopeParams & LegacySignalOption, opts?: {
3762
4077
  signal?: AbortSignal;
3763
4078
  }) => Promise<{
3764
4079
  id: string;
3765
4080
  }>;
3766
4081
  /** Leave a shelter (deletes the acting member's own assignment). PLA-1260. */
3767
- leave: (assignmentId: string, opts?: {
4082
+ leave: (assignmentId: string, params?: EventScopeParams & LegacySignalOption, opts?: {
3768
4083
  signal?: AbortSignal;
3769
4084
  }) => Promise<{
3770
4085
  id: string;
3771
4086
  deleted: boolean;
3772
4087
  }>;
3773
4088
  /** Accept or decline a shelter invitation. PLA-1260. */
3774
- respond: (assignmentId: string, accept: boolean, opts?: {
4089
+ respond: (assignmentId: string, accept: boolean, params?: EventScopeParams & LegacySignalOption, opts?: {
3775
4090
  signal?: AbortSignal;
3776
4091
  }) => Promise<{
3777
4092
  id: string;
@@ -3869,8 +4184,11 @@ export declare class PlayaOSClient {
3869
4184
  requestReservation: (payload: BikeRentalRequestInput, opts?: {
3870
4185
  signal?: AbortSignal;
3871
4186
  }) => Promise<BikeRentalRequestResult>;
3872
- /** Members who said they want a bike but have no reservation, for the active camp year. Org key only. */
3873
- interestedNotReserved: (opts?: {
4187
+ /**
4188
+ * Members who said they want a bike but have no reservation, for one event or camp year. With
4189
+ * no params, the camp's configured active camp year. Org key only.
4190
+ */
4191
+ interestedNotReserved: (params?: EventScopeParams, opts?: {
3874
4192
  signal?: AbortSignal;
3875
4193
  }) => Promise<BikeRentalInterestedNotReservedResponse>;
3876
4194
  };
@@ -4090,10 +4408,10 @@ export declare class PlayaOSClient {
4090
4408
  * Admin/super_admin only; there is no member-facing SAP surface. Year is
4091
4409
  * the selected year when supplied, otherwise the org's active camp year.
4092
4410
  */
4411
+ /** SAP reads and writes take an ADR-132 scope; without one, the configured active camp year. */
4093
4412
  readonly sap: {
4094
- roster: (params?: {
4095
- year?: number;
4096
- }, opts?: {
4413
+ /** With an event scope, the event's participants instead of the year's roster. */
4414
+ roster: (params?: EventScopeParams, opts?: {
4097
4415
  signal?: AbortSignal;
4098
4416
  }) => Promise<Array<{
4099
4417
  id: string;
@@ -4104,8 +4422,7 @@ export declare class PlayaOSClient {
4104
4422
  buildArrivalDate: string | null;
4105
4423
  }>>;
4106
4424
  allocation: {
4107
- get: (opts?: {
4108
- year?: number;
4425
+ get: (params?: EventScopeParams & LegacySignalOption, opts?: {
4109
4426
  signal?: AbortSignal;
4110
4427
  }) => Promise<SapAllocation>;
4111
4428
  update: (payload: UpdateSapAllocationInput, opts?: {
@@ -4116,30 +4433,29 @@ export declare class PlayaOSClient {
4116
4433
  update: (id: string, payload: {
4117
4434
  slotsAvailable: number;
4118
4435
  notes?: string | null;
4119
- }, opts?: {
4436
+ } & EventScopeParams, opts?: {
4120
4437
  signal?: AbortSignal;
4121
4438
  }) => Promise<{
4122
4439
  ok: true;
4123
4440
  }>;
4124
- remove: (id: string, opts?: {
4441
+ /** A scope, when sent, must match the row's own event or year. */
4442
+ remove: (id: string, params?: EventScopeParams & LegacySignalOption, opts?: {
4125
4443
  signal?: AbortSignal;
4126
4444
  }) => Promise<{
4127
4445
  ok: true;
4128
4446
  }>;
4129
- list: (opts?: {
4130
- year?: number;
4447
+ list: (params?: EventScopeParams & LegacySignalOption, opts?: {
4131
4448
  signal?: AbortSignal;
4132
4449
  }) => Promise<{
4133
4450
  items: SapDayAllocation[];
4134
4451
  }>;
4135
- /** Upserts by (active year, accessDate); 409 on a cross-org date collision. */
4452
+ /** Upserts by (scope, accessDate); 409 on a date collision or an ambiguous year. */
4136
4453
  upsert: (payload: UpsertSapDayAllocationInput, opts?: {
4137
4454
  signal?: AbortSignal;
4138
4455
  }) => Promise<SapDayAllocation>;
4139
4456
  };
4140
4457
  assignments: {
4141
- list: (opts?: {
4142
- year?: number;
4458
+ list: (params?: EventScopeParams & LegacySignalOption, opts?: {
4143
4459
  signal?: AbortSignal;
4144
4460
  }) => Promise<{
4145
4461
  items: SapAssignment[];
@@ -4150,7 +4466,7 @@ export declare class PlayaOSClient {
4150
4466
  update: (payload: UpdateSapAssignmentInput, opts?: {
4151
4467
  signal?: AbortSignal;
4152
4468
  }) => Promise<SapAssignment>;
4153
- remove: (assignmentId: string, opts?: {
4469
+ remove: (assignmentId: string, params?: EventScopeParams & LegacySignalOption, opts?: {
4154
4470
  signal?: AbortSignal;
4155
4471
  }) => Promise<{
4156
4472
  ok: true;
@@ -4158,7 +4474,8 @@ export declare class PlayaOSClient {
4158
4474
  };
4159
4475
  };
4160
4476
  readonly importantDates: {
4161
- adminList: (opts?: {
4477
+ /** Scope with `eventId` or `year` (ADR-132); with neither, the active camp year (409 when none). */
4478
+ adminList: (params?: EventScopeParams & LegacySignalOption, opts?: {
4162
4479
  signal?: AbortSignal;
4163
4480
  }) => Promise<AdminImportantDate[]>;
4164
4481
  adminOperation: (payload: AdminImportantDateOperation, opts?: {
@@ -4166,28 +4483,38 @@ export declare class PlayaOSClient {
4166
4483
  }) => Promise<{
4167
4484
  success: true;
4168
4485
  }>;
4169
- /** Visible camp dates (PLA-1268), optionally pinned to a year. */
4486
+ /** Visible camp dates (PLA-1268), optionally pinned to an event or year (ADR-132). */
4487
+ list: (params?: EventScopeParams, opts?: {
4488
+ signal?: AbortSignal;
4489
+ }) => Promise<ImportantDate[]>;
4490
+ };
4491
+ readonly events: {
4492
+ /** The camp's events with the given status (default `published`), earliest first. */
4170
4493
  list: (params?: {
4171
- year?: number;
4494
+ status?: EventStatus;
4172
4495
  }, opts?: {
4173
4496
  signal?: AbortSignal;
4174
- }) => Promise<ImportantDate[]>;
4497
+ }) => Promise<EventSummary[]>;
4175
4498
  };
4176
4499
  readonly emails: {
4177
- recipients: (payload: EmailRecipientFilter, opts?: {
4500
+ /** Payment, attendance and build-week filters follow `eventId` or `year` (ADR-132). */
4501
+ recipients: (payload: EmailRecipientFilter & EventScopeParams, opts?: {
4178
4502
  signal?: AbortSignal;
4179
4503
  }) => Promise<EmailRecipient[]>;
4504
+ /** Year-dependent segment counts follow `eventId` or `year`; null when unscoped with no camp year. */
4180
4505
  composerOptions: (params?: {
4181
4506
  q?: string;
4182
- }, opts?: {
4507
+ } & EventScopeParams, opts?: {
4183
4508
  signal?: AbortSignal;
4184
4509
  }) => Promise<EmailComposerOptions>;
4185
- broadcast: (payload: {
4510
+ broadcast: (
4511
+ /** A provider segment is camp-wide and takes no `eventId` (ADR-132). */
4512
+ payload: {
4186
4513
  subject: string;
4187
4514
  body: string;
4188
4515
  filter?: EmailRecipientFilter;
4189
4516
  segmentKey?: EmailSegmentKey;
4190
- }, opts?: {
4517
+ } & EventScopeParams, opts?: {
4191
4518
  signal?: AbortSignal;
4192
4519
  }) => Promise<{
4193
4520
  success: true;
@@ -4197,7 +4524,11 @@ export declare class PlayaOSClient {
4197
4524
  failed: number;
4198
4525
  total: number;
4199
4526
  }>;
4200
- history: (opts?: {
4527
+ /**
4528
+ * Broadcast history scoped with `eventId` or `year` (ADR-132); with neither, the configured
4529
+ * active camp year. An event lists its own broadcasts plus the year's camp-wide ones.
4530
+ */
4531
+ history: (params?: EventScopeParams & LegacySignalOption, opts?: {
4201
4532
  signal?: AbortSignal;
4202
4533
  }) => Promise<{
4203
4534
  broadcasts: {
@@ -4320,22 +4651,19 @@ export declare class PlayaOSClient {
4320
4651
  /** Per-member checklist completion; non-admins are pinned to themselves. */
4321
4652
  progress: (params?: {
4322
4653
  userId?: string;
4323
- year?: number;
4324
- } & PaginationParams, opts?: {
4654
+ } & EventScopeParams & PaginationParams, opts?: {
4325
4655
  signal?: AbortSignal;
4326
4656
  }) => Promise<Paginated<OnboardingProgress>>;
4327
4657
  /** The acting member's own custom checklist items for a year (PLA-1340). */
4328
4658
  customItems: (params?: {
4329
4659
  userId?: string;
4330
- year?: number;
4331
- } & PaginationParams, opts?: {
4660
+ } & EventScopeParams & PaginationParams, opts?: {
4332
4661
  signal?: AbortSignal;
4333
4662
  }) => Promise<Paginated<MemberCustomChecklistItem>>;
4334
4663
  /** Tick a checklist item for the acting member (PLA-1259). */
4335
4664
  setProgress: (itemId: string, payload: {
4336
4665
  completed: boolean;
4337
- year?: number;
4338
- }, opts?: {
4666
+ } & EventScopeParams, opts?: {
4339
4667
  signal?: AbortSignal;
4340
4668
  }) => Promise<OnboardingProgress>;
4341
4669
  };
@@ -4411,21 +4739,19 @@ export declare class PlayaOSClient {
4411
4739
  */
4412
4740
  list: (params?: {
4413
4741
  status?: ApplicationStatus;
4414
- year?: number;
4415
4742
  virginBurner?: "true" | "false";
4416
4743
  hasReferral?: "true" | "false";
4417
4744
  q?: string;
4418
- } & PaginationParams, opts?: {
4745
+ } & EventScopeParams & PaginationParams, opts?: {
4419
4746
  signal?: AbortSignal;
4420
4747
  }) => Promise<Paginated<ApplicationAdmin>>;
4421
4748
  /**
4422
- * Application capacity for a camp year (PLA-1328): the approved count
4423
- * against the camp cap, defaulting to the org's active camp year. v1-only
4424
- * — requires a member token (`withMember`).
4749
+ * Application capacity (PLA-1328): the approved count against the camp
4750
+ * cap for one event, or a year with no event (ADR-132), defaulting to the
4751
+ * org's configured active camp year. v1-only — requires a member token
4752
+ * (`withMember`).
4425
4753
  */
4426
- capacity: (params?: {
4427
- year?: number;
4428
- }, opts?: {
4754
+ capacity: (params?: EventScopeParams, opts?: {
4429
4755
  signal?: AbortSignal;
4430
4756
  }) => Promise<ApplicationCapacity>;
4431
4757
  /**
@@ -4544,23 +4870,21 @@ export declare class PlayaOSClient {
4544
4870
  accessToken?: string;
4545
4871
  signal?: AbortSignal;
4546
4872
  }) => Promise<DuesUpdateResponse>;
4547
- /** Per-member dues state from `member_dues_status` (PLA-1336). V1-only — requires a member token. */
4548
- status: (params?: {
4549
- year?: number;
4550
- }, opts?: {
4873
+ /**
4874
+ * Per-member dues state for one event or camp year (PLA-1336, ADR-132). With no params, the
4875
+ * configured active camp year. V1-only — requires a member token.
4876
+ */
4877
+ status: (params?: EventScopeParams, opts?: {
4551
4878
  signal?: AbortSignal;
4552
4879
  }) => Promise<MemberDuesStatus[]>;
4553
- /** Per-tier dues totals from `dues_summary` (PLA-1336). V1-only — requires a member token. */
4554
- summary: (params?: {
4555
- year?: number;
4556
- }, opts?: {
4880
+ /** Per-tier dues totals for one event or camp year (PLA-1336, ADR-132). V1-only — requires a member token. */
4881
+ summary: (params?: EventScopeParams, opts?: {
4557
4882
  signal?: AbortSignal;
4558
4883
  }) => Promise<DuesSummaryRow[]>;
4559
- /** Members who paid a given dues type (PLA-1336). V1-only — requires a member token. */
4884
+ /** Members who paid a given dues type, for one event or camp year (PLA-1336, ADR-132). V1-only — requires a member token. */
4560
4885
  payors: (params: {
4561
4886
  duesType: string;
4562
- year: number;
4563
- }, opts?: {
4887
+ } & EventScopeParams, opts?: {
4564
4888
  signal?: AbortSignal;
4565
4889
  }) => Promise<DuesTypePayor[]>;
4566
4890
  };
@@ -4759,5 +5083,5 @@ interface PublicMarketplaceClient {
4759
5083
  }
4760
5084
  export declare function createPublicMarketplaceClient(opts: PublicMarketplaceClientOptions): PublicMarketplaceClient;
4761
5085
  //#endregion
4762
- export type { AccountReviewProfile, AdminAccountsOperation, AdminAccountsPage, AdminBikeInterestRow, AdminBikeInventory, AdminBikeOperation, AdminBikeOperationResult, AdminBikeRental, AdminBikeType, AdminCampDocument, AdminCampSettings, AdminDocumentSignature, AdminGivebutterCatalog, AdminGivebutterCatalogOperation, AdminGivebutterWidgetOperation, AdminGivebutterWidgets, AdminImportOperation, AdminImportResult, AdminImportRow, AdminImportantDate, AdminImportantDateInput, AdminImportantDateOperation, AdminInterviewBooking, AdminMemberExportRow, AdminMemberInvite, AdminMemberOperation, AdminMemberRole, AdminMemberStatus, AdminNotificationPrefs, AdminPaymentOperation, AdminPaymentOperationResult, AdminPaymentSummary, AdminPaymentsPage, AdminScholarshipsPage, AdminShelter, AdminShelterOperation, AdminShift, AdminShiftType, AdminTicketRow, AdminWebhooksPage, Application, ApplicationActivityItem, ApplicationAdmin, ApplicationAnnotations, ApplicationCapacity, ApplicationCreatePayload, ApplicationCreateResponse, ApplicationNote, ApplicationScore, ApplicationStatus, ApplicationTransitionPayload, ApplicationTransitionResponse, ApplicationWorkflowInput, ApplicationWorkflowOptions, BikeRentalCatalogItem, BikeRentalCatalogResponse, BikeRentalDeliveryMode, BikeRentalFramePreference, BikeRentalInterestedMember, BikeRentalInterestedNotReservedResponse, BikeRentalRequestInput, BikeRentalRequestResult, BikeRentalReservation, BikeRentalReservationListResponse, BikeRentalWaiver, BookkeepingAdminOperation, BookkeepingExportPreview, BuildStrikeReportRow, CampDocumentDownloadUrl, CampDocumentSignature, CampDocumentSignaturesResponse, CampSettingsOperation, CampYearWithCounts, Commitment, CommitmentDataType, CommitmentValue, CommitmentsListResponse, ContactSyncResponse, ContractSection, CreateMeetingInput, CreateSapAssignmentInput, CreateScholarshipInput, DailyHeadcount, DashboardMetrics, DirectoryMember, DirectoryMembersListResponse, DocumentWriteInput, DuesStatus, DuesSummaryRow, DuesTypePayor, EmailCmsPreview, EmailComposerOptions, EmailDeliveryPage, EmailLog, EmailRecipient, EmailRecipientFilter, EmailRetry, EmailRetryCount, EmailRetryListResponse, EmailSegmentKey, EmailTemplate, ExchangeParams, ExchangeResult, ImageUploadTarget, ImportantDate, InterviewFeedBooking, ListingImage, LogisticsBreakdowns, LogisticsSummary, MarketplaceFlagReason, Meeting, MeetingDateOption, MeetingListResponse, MeetingRsvp, Member, MemberBikeStatus, MemberBootstrap, MemberCreatePayload, MemberCreateResponse, MemberCustomChecklistItem, MemberDashboard, MemberDeactivateResponse, MemberDevice, MemberDocumentPage, MemberDuesStatus, MemberGateId, MemberGatePlan, MemberGateStep, MemberInboxNotification, MemberInboxPage, MemberOnboardingUpdate, MemberPreferences, MemberProfileDetails, MemberPushPreferences, MemberRole, MemberSelfProfile, MemberSelfProfilePatch, MemberShelter, MemberShelterPage, MemberShiftView, MemberTag, MemberTagAssignment, MemberTagWithMemberCount, MemberUpdatePayload, MemberUpdateResponse, MobileShifts, NewListingInput, OnboardingChecklistCategory, OnboardingChecklistItem, OnboardingProgress, OrgConfig, OwnerShelterCreate, OwnerShelterPatch, PackingCampAdminItem, PackingCampAdminList, PackingCampCategory, PackingCampCategoryInput, PackingCampItem, PackingContainer, PackingContainerInput, PackingContainerListResponse, PackingContainerType, PackingItem, PackingItemStatus, PackingLayer, PackingListResponse, PackingPersonalItem, PackingPlacementListResponse, PaymentPageResponse, PublicMarketplaceClient, PublicMarketplaceClientOptions, RvAmperageTotal, SapAllocation, SapAssignment, SapDayAllocation, SchedulingAdminOperation, SchedulingAdminResult, SchedulingAdminSettings, SchedulingAvailability, SchedulingOverride, Scholarship, ScholarshipStats, ScholarshipStatus, SetPhotoPayload, SheetsSyncResult, ShelterTypeDistribution, Shift, ShiftAdminOperation, ShiftAdminOperationResult, ShiftAdminWorkflow, ShiftAdminWorkflowResult, ShiftPlannerData, ShiftSignup, ShiftType, SummerCampAttendee, SummerCampEvent, SummerCampRsvp, SummerCampRsvpInput, Ticket, TicketStatus, TicketUpdateInput, TshirtSizeTotal, UnmatchedRefund, UnsureDateMember, UpdateSapAllocationInput, UpdateSapAssignmentInput, UpsertPackingCampItemInput, UpsertSapDayAllocationInput, VehiclePass, VehiclePassStatus, VehiclePassUpdateInput, Waiver, WaiverContent, WaiverSection, WaiverSignPayload, WaiverSignResponse, WaiverStatus, WebhookCandidate, WebhookLog, WebhookMatchSelection };
5086
+ export type { AccountReviewProfile, AdminAccountsOperation, AdminAccountsPage, AdminBikeInterestRow, AdminBikeInventory, AdminBikeOperation, AdminBikeOperationResult, AdminBikeRental, AdminBikeType, AdminCampDocument, AdminCampSettings, AdminDocumentSignature, AdminGivebutterCatalog, AdminGivebutterCatalogOperation, AdminGivebutterWidgetOperation, AdminGivebutterWidgets, AdminImportOperation, AdminImportResult, AdminImportRow, AdminImportantDate, AdminImportantDateInput, AdminImportantDateOperation, AdminInterviewBooking, AdminMemberExportRow, AdminMemberInvite, AdminMemberOperation, AdminMemberRole, AdminMemberStatus, AdminNotificationPrefs, AdminPaymentOperation, AdminPaymentOperationResult, AdminPaymentSummary, AdminPaymentsPage, AdminScholarshipsPage, AdminShelter, AdminShelterOperation, AdminShift, AdminShiftType, AdminTicketRow, AdminWebhooksPage, Application, ApplicationActivityItem, ApplicationAdmin, ApplicationAnnotations, ApplicationCapacity, ApplicationCreatePayload, ApplicationCreateResponse, ApplicationEvent, ApplicationNote, ApplicationScore, ApplicationStatus, ApplicationTransitionPayload, ApplicationTransitionResponse, ApplicationWorkflowCapabilities, ApplicationWorkflowInput, ApplicationWorkflowOptions, AvailabilityWindow, BikeRentalCatalogItem, BikeRentalCatalogResponse, BikeRentalDeliveryMode, BikeRentalFramePreference, BikeRentalInterestedMember, BikeRentalInterestedNotReservedResponse, BikeRentalRequestInput, BikeRentalRequestResult, BikeRentalReservation, BikeRentalReservationListResponse, BikeRentalWaiver, BookkeepingAdminOperation, BookkeepingExportPreview, BookkeepingSummary, BuildStrikeReportRow, CampDocumentDownloadUrl, CampDocumentSignature, CampDocumentSignaturesResponse, CampSettingsOperation, CampYearWithCounts, Commitment, CommitmentDataType, CommitmentValue, CommitmentsListResponse, ContactSyncResponse, ContractSection, CreateMeetingInput, CreateSapAssignmentInput, CreateScholarshipInput, DailyHeadcount, DashboardMetrics, DirectoryMember, DirectoryMembersListResponse, DocumentWriteInput, DuesStatus, DuesSummaryRow, DuesTypePayor, EmailCmsPreview, EmailComposerOptions, EmailDeliveryPage, EmailLog, EmailRecipient, EmailRecipientFilter, EmailRetry, EmailRetryCount, EmailRetryListResponse, EmailSegmentKey, EmailTemplate, EventReadOnlyApiError, EventScopeParams, EventStatus, EventSummary, ExchangeParams, ExchangeResult, ImageUploadTarget, ImportantDate, InterviewFeedBooking, ListingImage, LogisticsBreakdowns, LogisticsSummary, MarketplaceFlagReason, Meeting, MeetingDateOption, MeetingListResponse, MeetingRsvp, Member, MemberBikeStatus, MemberBootstrap, MemberCreatePayload, MemberCreateResponse, MemberCustomChecklistItem, MemberDashboard, MemberDeactivateResponse, MemberDevice, MemberDocumentPage, MemberDuesStatus, MemberGateId, MemberGatePlan, MemberGateStep, MemberInboxNotification, MemberInboxPage, MemberOnboardingUpdate, MemberPaymentsOverview, MemberPreferences, MemberProfileDetails, MemberPushPreferences, MemberRole, MemberSelfProfile, MemberSelfProfilePatch, MemberShelter, MemberShelterPage, MemberShiftView, MemberTag, MemberTagAssignment, MemberTagWithMemberCount, MemberUpdatePayload, MemberUpdateResponse, MobileShifts, NewListingInput, OnboardingChecklistCategory, OnboardingChecklistItem, OnboardingProgress, OrgConfig, OrgEvent, OwnerShelterCreate, OwnerShelterPatch, PackingCampAdminItem, PackingCampAdminList, PackingCampCategory, PackingCampCategoryInput, PackingCampItem, PackingContainer, PackingContainerInput, PackingContainerListResponse, PackingContainerType, PackingItem, PackingItemStatus, PackingLayer, PackingListResponse, PackingPersonalItem, PackingPlacementListResponse, PaymentPageResponse, PublicMarketplaceClient, PublicMarketplaceClientOptions, RvAmperageTotal, SapAllocation, SapAssignment, SapDayAllocation, SchedulingAdminOperation, SchedulingAdminResult, SchedulingAdminSettings, SchedulingAvailability, SchedulingOverride, Scholarship, ScholarshipStats, ScholarshipStatus, SetPhotoPayload, SheetsSyncResult, ShelterTypeDistribution, Shift, ShiftAdminOperation, ShiftAdminOperationResult, ShiftAdminWorkflow, ShiftAdminWorkflowResult, ShiftPlannerData, ShiftSignup, ShiftType, SummerCampAttendee, SummerCampEvent, SummerCampRsvp, SummerCampRsvpInput, Ticket, TicketStatus, TicketUpdateInput, TshirtSizeTotal, UnmatchedRefund, UnsureDateMember, UpdateSapAllocationInput, UpdateSapAssignmentInput, UpsertPackingCampItemInput, UpsertSapDayAllocationInput, VehiclePass, VehiclePassStatus, VehiclePassUpdateInput, Waiver, WaiverContent, WaiverSection, WaiverSignPayload, WaiverSignResponse, WaiverStatus, WebhookCandidate, WebhookLog, WebhookMatchSelection };
4763
5087
  //# sourceMappingURL=index.d.ts.map