@cyc-seattle/platform 1.42.1 → 1.43.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/README.md CHANGED
@@ -12,7 +12,7 @@ app owns. The apps that run on it live in their own repos, such as
12
12
  | [`infra`](stacks/infra) | The VPC, the cluster subnet and its Cloud NAT on a static address, the private services peering, the prod and dev Cloud SQL instances, the DNS zones, Artifact Registry and its cleanup policy, the GKE Autopilot cluster, the shared Gateway, its address, certificates, and dev's DNS records, the `dev` and `prod` namespaces with their quotas and network policies, dev's RBAC, the prod Job alerts, the log exclusions, the public website's Firebase Hosting site, and each environment's `platform/outputs.json` | `deploy-runner`, from Actions after approval. A deployer, with `mise run deploy`, when breaking glass. |
13
13
  | [`smoke`](stacks/smoke) | One `WebService` in dev, at `smoke.dev.cycsail.team`, for the integration tests | `deploy-dev`, from Actions for each queued PR. A deployer, with `PULUMI_STACK=dev mise run deploy`, when breaking glass. |
14
14
  | [`backend`](stacks/backend) | Directus, with the schema apply from `schemas/`, its roles, policies, and permission rules, the sync and website build machine users, its OIDC client, and MCP, and the clubspot-sync and gsuite-sync CronJobs, with dev's Clubspot and Workspace fakes | `deploy-dev`, from Actions for each queued PR, and `deploy-runner` on a push to `main`, after `infra`. |
15
- | [`authentik`](stacks/authentik) | Authentik, the sign-in at `login.<domain>`: its server and worker, database, secrets, and A record, dev's Mailpit, and its own configuration: flows, stages, policies, the Google source, the `staff` group, and the Directus OIDC and portal proxy applications | `deploy-dev`, from Actions for each queued PR, and `deploy-runner` on a push to `main`, after `backend`. |
15
+ | [`authentik`](stacks/authentik) | Authentik, the sign-in at `login.<domain>`: its server and worker, database, secrets, and A record, dev's Mailpit, and its own configuration: flows, stages, policies, the Google source, the `staff` group, the `Admins` superuser group, and the Directus OIDC and portal proxy applications | `deploy-dev`, from Actions for each queued PR, and `deploy-runner` on a push to `main`, after `backend`. |
16
16
 
17
17
  ## @cyc-seattle/platform
18
18
 
@@ -199,18 +199,14 @@ export interface PlanStaffLevel extends Versioned {
199
199
  name: string;
200
200
  pay_type: "hourly" | "volunteer";
201
201
  hourly_rate_cents: number | null;
202
- /** `qualifications` ids. */
203
- qualifications: Id[] | null;
204
202
  }
205
203
  export interface PlanSalariedPosition extends Versioned {
206
204
  name: string;
207
205
  annual_salary_cents: number;
208
206
  paid_hours_per_year: number | null;
209
- qualifications: Id[] | null;
210
207
  ga_share: number | null;
211
208
  /** The pool that takes the salary its hours don't charge to programs. */
212
209
  remainder_pool_id: Id | null;
213
- form_990_line: string | null;
214
210
  /** What it's paid an hour to coach an offering that pays it by the hour, instead of the offering's level. */
215
211
  hourly_coaching_rate_cents?: number | null;
216
212
  }
@@ -2,10 +2,7 @@
2
2
  export interface Schema {
3
3
  accounts: Accounts[];
4
4
  audit_findings: AuditFindings[];
5
- boat_charters: BoatCharters[];
6
5
  boat_classes: BoatClasses[];
7
- boat_damage: BoatDamage[];
8
- boat_stage_changes: BoatStageChanges[];
9
6
  boats: Boats[];
10
7
  catalog_offerings: CatalogOfferings[];
11
8
  clubspot_camps: ClubspotCamps[];
@@ -72,8 +69,6 @@ export interface Schema {
72
69
  registrations: Registrations[];
73
70
  resource_kinds: ResourceKinds[];
74
71
  schools: Schools[];
75
- storage_agreements: StorageAgreements[];
76
- storage_spaces: StorageSpaces[];
77
72
  sync_leases: SyncLeases[];
78
73
  sync_runs: SyncRuns[];
79
74
  sync_tasks: SyncTasks[];
@@ -131,20 +126,6 @@ export interface AuditFindings {
131
126
  /** Identifies the finding, so a dismissal survives the next run. */
132
127
  fingerprint: string;
133
128
  }
134
- /** Which sailor charters which boat, and when. */
135
- export interface BoatCharters {
136
- id: string;
137
- boat_id: string | Boats;
138
- person_id: string | People;
139
- /** The charter product the boat's costs go to. */
140
- product_id: string | Products;
141
- starts_on: string;
142
- ends_on: string;
143
- /** What the sailor pays for the charter. In cents: 12500 is $125.00. */
144
- fee_cents: number;
145
- /** A link to the signed charter agreement. */
146
- agreement_url: string | null;
147
- }
148
129
  /** A kind of boat offerings sail, such as Opti or 420. */
149
130
  export interface BoatClasses {
150
131
  id: string;
@@ -153,50 +134,24 @@ export interface BoatClasses {
153
134
  /** Dry-storage area one boat takes. */
154
135
  footprint_sq_ft: string | null;
155
136
  }
156
- /** Damage to CSC's boats, what it cost to repair, and what the sailor was charged. */
157
- export interface BoatDamage {
158
- id: string;
159
- boat_id: string | Boats;
160
- occurred_on: string;
161
- description: string;
162
- status: "open" | "repaired" | "written_off";
163
- /** What the repair cost, or will cost. In cents: 12500 is $125.00. */
164
- repair_cost_cents: number | null;
165
- /** The sailor charged for the damage, if anyone is. */
166
- person_id: string | People | null;
167
- /** What the sailor was charged. In cents: 12500 is $125.00. */
168
- charged_cents: number | null;
169
- }
170
- /** 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. */
171
- export interface BoatStageChanges {
172
- id: string;
173
- boat_id: string | Boats;
174
- /** A boat wears down over its charter life, then its beginner life. */
175
- stage: "charter" | "beginner" | "retired";
176
- changed_on: string;
177
- /** Why it moved, such as hull damage. */
178
- note: string | null;
179
- }
180
- /** Each of CSC's own boats. Sailors' own boats aren't listed here. */
137
+ /** Each boat CSC owns, for planning the year. Sailors' own boats aren't listed here. */
181
138
  export interface Boats {
182
139
  id: string;
183
140
  boat_class_id: string | BoatClasses;
184
- sail_number: string | null;
185
- /** The hull identification number on the transom. */
186
- hull_number: string;
187
141
  /** The boat's name, if it has one. */
188
142
  name: string | null;
189
- acquired_how: "bought" | "donated";
190
- /** What CSC paid, or what a donated boat was worth when it arrived. In cents: 12500 is $125.00. */
191
- value_cents: number;
143
+ sail_number: string | null;
144
+ /** The hull identification number on the transom, if it's known. */
145
+ hull_number: string | null;
146
+ /** What the boat is worth. In cents: 12500 is $125.00. */
147
+ value_cents: number | null;
192
148
  /** The day CSC got the boat. */
193
149
  acquired_on: string | null;
194
150
  /** The day the boat first sailed in a program. */
195
151
  in_service_on: string | null;
196
- storage_space_id: string | StorageSpaces | null;
152
+ /** The day CSC stopped using the boat. Empty while it's still in use. */
153
+ retired_on: string | null;
197
154
  note: string | null;
198
- stage_changes: (string | BoatStageChanges)[];
199
- damage: (string | BoatDamage)[];
200
155
  }
201
156
  /** 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. */
202
157
  export interface CatalogOfferings {
@@ -728,8 +683,6 @@ export interface PlanOfferings {
728
683
  /** Stays the same across versions. Copy it where another row asks for this one's Key. */
729
684
  key: string;
730
685
  product_id: string | Products;
731
- /** Which of the program's catalog offerings this is, such as "J-Pod · fall practices". It's how Clubspot's sign-ups find it, in every Financial Plan. */
732
- catalog_offering_id: string | CatalogOfferings | null;
733
686
  name: string;
734
687
  season_term: string | null;
735
688
  starts_on: string;
@@ -961,13 +914,10 @@ export interface PlanSalariedPositions {
961
914
  /** In cents: 12500 is $125.00. */
962
915
  annual_salary_cents: number;
963
916
  paid_hours_per_year: number | null;
964
- /** The qualifications this position needs. Add each one's ID, from the end of its page's web address. */
965
- qualifications: string[] | null;
966
917
  /** The share of its salary that is general and administrative (G&A). 0.2 means 20%. */
967
918
  ga_share: string | null;
968
919
  /** The pool that takes the salary its hours don't charge to programs. */
969
920
  remainder_pool_id: string | PlanPools | null;
970
- form_990_line: string | null;
971
921
  /** What this position is paid an hour to coach an offering that pays its salaried coach by the hour, instead of the offering's coach level. Leave empty to use the level. In cents: 12500 is $125.00. */
972
922
  hourly_coaching_rate_cents: number | null;
973
923
  }
@@ -982,8 +932,6 @@ export interface PlanStaffLevels {
982
932
  pay_type: "hourly" | "volunteer";
983
933
  /** In cents: 12500 is $125.00. */
984
934
  hourly_rate_cents: number | null;
985
- /** The qualifications this level needs. Add each one's ID, from the end of its page's web address. */
986
- qualifications: string[] | null;
987
935
  }
988
936
  /** A trip an offering travels for, such as an away regatta. */
989
937
  export interface PlanTrips {
@@ -1029,8 +977,6 @@ export interface Plans {
1029
977
  /** The plan year. Fiscal year N ends in calendar year N. Can't change once the plan has a saved copy. */
1030
978
  fiscal_year: number;
1031
979
  name: string;
1032
- /** A plan with a saved copy can't be deleted, so archive it instead. */
1033
- archived: boolean;
1034
980
  /** The plan's copy in each Financial Plan. */
1035
981
  versions: (string | PlanVersions)[];
1036
982
  }
@@ -1132,35 +1078,6 @@ export interface Schools {
1132
1078
  /** 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. */
1133
1079
  aliases: string[] | null;
1134
1080
  }
1135
- /** Storage CSC sells to sailors for their own boats. */
1136
- export interface StorageAgreements {
1137
- id: string;
1138
- person_id: string | People;
1139
- storage_space_id: string | StorageSpaces;
1140
- /** The storage product the agreement is sold as. */
1141
- product_id: string | Products;
1142
- /** The sailor's own boat, such as its class and sail number. */
1143
- boat_description: string | null;
1144
- starts_on: string;
1145
- /** Empty while the agreement runs on. */
1146
- ends_on: string | null;
1147
- /** What the sailor pays for the agreement. In cents: 12500 is $125.00. */
1148
- fee_cents: number;
1149
- /** A link to the signed storage agreement. */
1150
- agreement_url: string | null;
1151
- }
1152
- /** The racks and deck space CSC keeps boats on, each for one boat class. */
1153
- export interface StorageSpaces {
1154
- id: string;
1155
- kind: "rack" | "deck";
1156
- /** Where it is, such as Rack 3 or North deck. */
1157
- location: string;
1158
- boat_class_id: string | BoatClasses;
1159
- /** How many boats it holds. */
1160
- capacity: number;
1161
- /** The floor space it takes. */
1162
- footprint_sq_ft: string | null;
1163
- }
1164
1081
  /** Which syncs are running now. A sync holds its queue while it runs, so a second run waits its turn. Written by the syncs. */
1165
1082
  export interface SyncLeases {
1166
1083
  id: string;
@@ -1206,8 +1123,8 @@ export interface SyncTasks {
1206
1123
  export interface Venues {
1207
1124
  id: string;
1208
1125
  name: string;
1209
- /** The organization that runs it. */
1210
- organization_id: string | Organizations;
1126
+ /** The organization that runs it. Leave it empty for a public marina. */
1127
+ organization_id: string | Organizations | null;
1211
1128
  /** Its street address, or where to find it. */
1212
1129
  address: string | null;
1213
1130
  /** Other names it goes by, such as on a regatta's notice of race. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyc-seattle/platform",
3
- "version": "1.42.1",
3
+ "version": "1.43.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",