@cyc-seattle/platform 1.40.2 → 1.42.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.
@@ -2,7 +2,11 @@
2
2
  export interface Schema {
3
3
  accounts: Accounts[];
4
4
  audit_findings: AuditFindings[];
5
+ boat_charters: BoatCharters[];
5
6
  boat_classes: BoatClasses[];
7
+ boat_damage: BoatDamage[];
8
+ boat_stage_changes: BoatStageChanges[];
9
+ boats: Boats[];
6
10
  catalog_offerings: CatalogOfferings[];
7
11
  clubspot_camps: ClubspotCamps[];
8
12
  clubspot_classes: ClubspotClasses[];
@@ -68,9 +72,13 @@ export interface Schema {
68
72
  registrations: Registrations[];
69
73
  resource_kinds: ResourceKinds[];
70
74
  schools: Schools[];
75
+ storage_agreements: StorageAgreements[];
76
+ storage_spaces: StorageSpaces[];
71
77
  sync_leases: SyncLeases[];
72
78
  sync_runs: SyncRuns[];
73
79
  sync_tasks: SyncTasks[];
80
+ terms: Terms[];
81
+ venues: Venues[];
74
82
  version_set_members: VersionSetMembers[];
75
83
  version_sets: VersionSets[];
76
84
  website_categories: WebsiteCategories[];
@@ -124,6 +132,21 @@ export interface AuditFindings {
124
132
  /** Identifies the finding, so a dismissal survives the next run. */
125
133
  fingerprint: string;
126
134
  }
135
+ /** Which sailor charters which boat each term. */
136
+ export interface BoatCharters {
137
+ id: string;
138
+ boat_id: string | Boats;
139
+ person_id: string | People;
140
+ term_id: string | Terms;
141
+ /** The charter product the boat's costs go to. */
142
+ product_id: string | Products;
143
+ starts_on: string;
144
+ ends_on: string;
145
+ /** What the sailor pays for the charter. In cents: 12500 is $125.00. */
146
+ fee_cents: number;
147
+ /** A link to the signed charter agreement. */
148
+ agreement_url: string | null;
149
+ }
127
150
  /** A kind of boat offerings sail, such as Opti or 420. */
128
151
  export interface BoatClasses {
129
152
  id: string;
@@ -132,6 +155,51 @@ export interface BoatClasses {
132
155
  /** Dry-storage area one boat takes. */
133
156
  footprint_sq_ft: string | null;
134
157
  }
158
+ /** Damage to CSC's boats, what it cost to repair, and what the sailor was charged. */
159
+ export interface BoatDamage {
160
+ id: string;
161
+ boat_id: string | Boats;
162
+ occurred_on: string;
163
+ description: string;
164
+ status: "open" | "repaired" | "written_off";
165
+ /** What the repair cost, or will cost. In cents: 12500 is $125.00. */
166
+ repair_cost_cents: number | null;
167
+ /** The sailor charged for the damage, if anyone is. */
168
+ person_id: string | People | null;
169
+ /** What the sailor was charged. In cents: 12500 is $125.00. */
170
+ charged_cents: number | null;
171
+ }
172
+ /** When each boat started its charter life, moved to its beginner life, or retired. A boat's stage is its latest row. Add a row to move a boat on. A row can't be changed once it's added. */
173
+ export interface BoatStageChanges {
174
+ id: string;
175
+ boat_id: string | Boats;
176
+ /** A boat wears down over its charter life, then its beginner life. */
177
+ stage: "charter" | "beginner" | "retired";
178
+ changed_on: string;
179
+ /** Why it moved, such as hull damage. */
180
+ note: string | null;
181
+ }
182
+ /** Each of CSC's own boats. Sailors' own boats aren't listed here. */
183
+ export interface Boats {
184
+ id: string;
185
+ boat_class_id: string | BoatClasses;
186
+ sail_number: string | null;
187
+ /** The hull identification number on the transom. */
188
+ hull_number: string;
189
+ /** The boat's name, if it has one. */
190
+ name: string | null;
191
+ acquired_how: "bought" | "donated";
192
+ /** What CSC paid, or what a donated boat was worth when it arrived. In cents: 12500 is $125.00. */
193
+ value_cents: number;
194
+ /** The day CSC got the boat. */
195
+ acquired_on: string | null;
196
+ /** The day the boat first sailed in a program. */
197
+ in_service_on: string | null;
198
+ storage_space_id: string | StorageSpaces | null;
199
+ note: string | null;
200
+ stage_changes: (string | BoatStageChanges)[];
201
+ damage: (string | BoatDamage)[];
202
+ }
135
203
  /** An offering of a program that plans and Clubspot both point to, such as "J-Pod · fall practices" or "Summer camp · week 3". Each Financial Plan sets its own price, schedule, and size for it, and Clubspot's offerings are linked to it. */
136
204
  export interface CatalogOfferings {
137
205
  id: string;
@@ -439,12 +507,19 @@ export interface OrganizationCostAccounts {
439
507
  cost_type: "coach_wages" | "salaries" | "payroll_tax" | "ribs" | "boat_maintenance" | "resources" | "travel" | "cogs" | "card_fees";
440
508
  account_id: string | Accounts;
441
509
  }
442
- /** A legal entity that keeps its own books. The fiscal year is set here, per organization. */
510
+ /** Yacht clubs, class associations, regional organizers, governing bodies and sailing centers, and our own organizations, which keep their own books. Only an admin changes them. */
443
511
  export interface Organizations {
444
512
  id: string;
445
513
  name: string;
446
- /** The month the fiscal year starts in. */
447
- fiscal_year_start_month: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
514
+ /** What people call it for short, such as its initials. */
515
+ short_name: string | null;
516
+ /** Ours keeps its own books and plans here. The rest are the clubs and organizers we sail with. A new organization starts as Ours, so change it for anyone else. */
517
+ kind: "own" | "yacht_club" | "class_association" | "regional_organizer" | "governing_body" | "sailing_center";
518
+ /** Its website's address, starting https://. */
519
+ website: string | null;
520
+ logo: string | null;
521
+ /** The month the fiscal year starts in. Only for our own organizations. */
522
+ fiscal_year_start_month: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | null;
448
523
  }
449
524
  /** One row for each person the club knows. */
450
525
  export interface People {
@@ -1059,6 +1134,35 @@ export interface Schools {
1059
1134
  /** Other ways families write this school on their Clubspot forms. An answer matching the name or one of these, ignoring capitals and punctuation and counting a run of spaces as one, is this school. Anything else is kept as their own words. */
1060
1135
  aliases: string[] | null;
1061
1136
  }
1137
+ /** Storage CSC sells to sailors for their own boats. */
1138
+ export interface StorageAgreements {
1139
+ id: string;
1140
+ person_id: string | People;
1141
+ storage_space_id: string | StorageSpaces;
1142
+ /** The storage product the agreement is sold as. */
1143
+ product_id: string | Products;
1144
+ /** The sailor's own boat, such as its class and sail number. */
1145
+ boat_description: string | null;
1146
+ starts_on: string;
1147
+ /** Empty while the agreement runs on. */
1148
+ ends_on: string | null;
1149
+ /** What the sailor pays for the agreement. In cents: 12500 is $125.00. */
1150
+ fee_cents: number;
1151
+ /** A link to the signed storage agreement. */
1152
+ agreement_url: string | null;
1153
+ }
1154
+ /** The racks and deck space CSC keeps boats on, each for one boat class. */
1155
+ export interface StorageSpaces {
1156
+ id: string;
1157
+ kind: "rack" | "deck";
1158
+ /** Where it is, such as Rack 3 or North deck. */
1159
+ location: string;
1160
+ boat_class_id: string | BoatClasses;
1161
+ /** How many boats it holds. */
1162
+ capacity: number;
1163
+ /** The floor space it takes. */
1164
+ footprint_sq_ft: string | null;
1165
+ }
1062
1166
  /** Which syncs are running now. A sync holds its queue while it runs, so a second run waits its turn. Written by the syncs. */
1063
1167
  export interface SyncLeases {
1064
1168
  id: string;
@@ -1100,6 +1204,27 @@ export interface SyncTasks {
1100
1204
  /** Set once the task has failed too many times. It keeps retrying; this flags it for staff. */
1101
1205
  needs_attention: boolean;
1102
1206
  }
1207
+ /** A season of the year, such as Fall 2026, that boat charters and boat costs count in. */
1208
+ export interface Terms {
1209
+ id: string;
1210
+ /** Such as Fall 2026. */
1211
+ name: string;
1212
+ starts_on: string;
1213
+ ends_on: string;
1214
+ /** The day a program director closed the term, so its boat costs stop changing. Clear it to reopen the term. */
1215
+ closed_on: string | null;
1216
+ }
1217
+ /** Where events are sailed, and who runs each place. Only an admin changes them. */
1218
+ export interface Venues {
1219
+ id: string;
1220
+ name: string;
1221
+ /** The organization that runs it. */
1222
+ organization_id: string | Organizations;
1223
+ /** Its street address, or where to find it. */
1224
+ address: string | null;
1225
+ /** Other names it goes by, such as on a regatta's notice of race. */
1226
+ aliases: string[] | null;
1227
+ }
1103
1228
  /** One plan in a Financial Plan: the copy of the plan it holds. Add or remove one only while the Financial Plan is a draft. */
1104
1229
  export interface VersionSetMembers {
1105
1230
  id: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyc-seattle/platform",
3
- "version": "1.40.2",
3
+ "version": "1.42.0",
4
4
  "description": "Pulumi components for CYC's shared Google Cloud platform: WebService, the platform outputs reader, and the stacks that build the platform",
5
5
  "author": "CYC Community Sailing Center",
6
6
  "license": "Apache-2.0",
@@ -65,7 +65,7 @@
65
65
  "devDependencies": {
66
66
  "@amiceli/vitest-cucumber": "7.0.0",
67
67
  "@commander-js/extra-typings": "^13.1.0",
68
- "@cyc-seattle/clubspot-sdk": "^0.3.0",
68
+ "@cyc-seattle/clubspot-sdk": "^0.4.1",
69
69
  "@cyc-seattle/commodore": "^0.1.0",
70
70
  "@cyc-seattle/gsuite-sdk": "^0.3.0",
71
71
  "@cyc-seattle/ts-config": "^0.1.2",
@@ -81,7 +81,6 @@
81
81
  "@types/js-yaml": "4.0.9",
82
82
  "@types/luxon": "^3.7.6",
83
83
  "@types/node": "^22.19.1",
84
- "@types/parse": "^3.0.9",
85
84
  "esbuild": "0.28.2",
86
85
  "eslint": "^9.39.5",
87
86
  "google-auth-library": "^11.3.0",