@updraft-solutions/mcrit-sdk 0.14.16 → 0.14.19

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.
@@ -61,7 +61,11 @@ var impersonationStateSchema = _zod.z.object({
61
61
  var userSchema = _zod.z.object({
62
62
  type: _zod.z.literal("user"),
63
63
  id: _zod.z.number(),
64
- name: _zod.z.string(),
64
+ // name/firstname/lastname are gate-guarded server-side exactly like
65
+ // email/mobile below (a `viewName` policy decision, driven by the member's
66
+ // own `name.visibility` setting) and go null TOGETHER when denied. Render
67
+ // a placeholder via a display-name helper — never a bare `user.name`.
68
+ name: _zod.z.string().nullable(),
65
69
  firstname: _zod.z.string().nullable().optional(),
66
70
  lastname: _zod.z.string().nullable().optional(),
67
71
  // email/mobile are gate-guarded server-side (viewMail/viewMobile) and come
@@ -505,7 +509,13 @@ var membershipIdentitySchema = _zod.z.object({
505
509
  user_id: _zod.z.number(),
506
510
  user: userSchema.optional(),
507
511
  company_id: _zod.z.number(),
508
- name: _zod.z.string()
512
+ // The member's display name, lifted off the user row — and gate-guarded on
513
+ // the way, exactly like `userSchema.name`: `MembershipResource` and
514
+ // `MembershipIdentityResource` both run it through `UserPolicy::viewName`
515
+ // (driven by the member's own `name.visibility` setting, default `*`) and
516
+ // send `null` when denied. Render a placeholder, never a bare
517
+ // `membership.name`.
518
+ name: _zod.z.string().nullable()
509
519
  });
510
520
  var nestedMembershipSchema = membershipIdentitySchema.extend({
511
521
  company: companyIdentitySchema.nullable().optional()
@@ -740,6 +750,25 @@ var airplanePermissionSchema = _zod.z.object({
740
750
  delete: zNullableBool
741
751
  }).optional()
742
752
  });
753
+ var teachingPermissionSchema = _zod.z.object({
754
+ type: _zod.z.literal("teaching_permission"),
755
+ id: _zod.z.number(),
756
+ course_id: _zod.z.number(),
757
+ course: _zod.z.object({ id: _zod.z.number(), name: _zod.z.string() }).passthrough().optional(),
758
+ membership_id: _zod.z.number(),
759
+ membership: nestedMembershipSchema.optional(),
760
+ status: _zod.z.enum(["pending", "approved"]),
761
+ is_active: _zod.z.boolean(),
762
+ expires_at: _zod.z.string().nullable().optional(),
763
+ notes: _zod.z.string().nullable().optional(),
764
+ conditions: _zod.z.string().nullable().optional(),
765
+ requested_by: userSchema.nullable().optional(),
766
+ approved_by: userSchema.nullable().optional(),
767
+ approved_at: _zod.z.string().nullable().optional(),
768
+ created_at: _zod.z.string(),
769
+ updated_at: _zod.z.string(),
770
+ can: _zod.z.object({ view: zNullableBool, update: zNullableBool, delete: zNullableBool, approve: zNullableBool }).optional()
771
+ });
743
772
  var landingFeeSchema = _zod.z.object({
744
773
  id: _zod.z.number(),
745
774
  airplane_id: _zod.z.number(),
@@ -1393,6 +1422,9 @@ var courseEnrollmentSchema = _zod.z.object({
1393
1422
  membership_id: _zod.z.number(),
1394
1423
  company_id: _zod.z.number(),
1395
1424
  mentor_id: _zod.z.number().nullable().optional(),
1425
+ // Default billing profile of the enrollment (null = the member's default);
1426
+ // the initial-fee items are billed to it.
1427
+ billing_profile_id: _zod.z.number().nullable().optional(),
1396
1428
  status: _zod.z.enum(["enrolled", "completed", "cancelled", "suspended"]),
1397
1429
  enrollment_date: _zod.z.string(),
1398
1430
  completion_date: _zod.z.string().nullable().optional(),
@@ -1410,6 +1442,7 @@ var courseEnrollmentSchema = _zod.z.object({
1410
1442
  course: courseSchema.optional(),
1411
1443
  membership: nestedMembershipSchema.optional(),
1412
1444
  mentor: userSchema.optional(),
1445
+ billingProfile: billingProfileSchema.nullable().optional(),
1413
1446
  // Present when eager-loaded (BaseCourseEnrollmentResource). Lazy: both
1414
1447
  // schemas are declared later in this file; there is no true cycle.
1415
1448
  expense_items: _zod.z.array(_zod.z.lazy(() => expenseItemSchema)).optional(),
@@ -1775,8 +1808,8 @@ var FaqStatus = /* @__PURE__ */ ((FaqStatus2) => {
1775
1808
  })(FaqStatus || {});
1776
1809
  var UserBasicSchema = _zod.z.object({
1777
1810
  id: _zod.z.number(),
1778
- name: _zod.z.string(),
1779
- email: _zod.z.string().email()
1811
+ name: _zod.z.string().nullable(),
1812
+ email: _zod.z.string().email().nullable()
1780
1813
  }).nullable();
1781
1814
  var FaqSchema = _zod.z.object({
1782
1815
  type: _zod.z.literal("faq"),
@@ -2704,8 +2737,19 @@ var fboFlightSchema = _zod.z.object({
2704
2737
  wx: _zod.z.boolean(),
2705
2738
  landings: _zod.z.number().nullable(),
2706
2739
  remarks: _zod.z.string().nullable(),
2707
- // Null on an assigned company's booking rendered as a movement (see `source`).
2708
- contact: zContactDTO.nullable(),
2740
+ /**
2741
+ * The filer's contact block. Own-row tier since the 2026-08 hardening: the
2742
+ * key is OMITTED for a reader who is neither the movement's author, a root
2743
+ * decider, nor in `assigned_user_ids` — a tenant colleague browsing a
2744
+ * movement they did not file no longer receives it. Still explicitly `null`
2745
+ * on an assigned company's booking rendered as a movement (see `source`),
2746
+ * so BOTH `undefined` and `null` occur and consumers must use `contact?.…`.
2747
+ *
2748
+ * A client that backfills an empty block to bind a form to must key that on
2749
+ * the KEY BEING PRESENT — `UpdateFlightRequest` accepts `contact` from any
2750
+ * updater, so sending a seeded blank would erase the author's data.
2751
+ */
2752
+ contact: zContactDTO.nullable().optional(),
2709
2753
  ground_services: fboGroundServicesSchema.nullable(),
2710
2754
  acceptance_status: fboAcceptanceStatusSchema,
2711
2755
  /** Own/details tier. `null` when neither dropzone window nor apron is set. */
@@ -3205,4 +3249,5 @@ var fboCompanySchema = _zod.z.object({
3205
3249
 
3206
3250
 
3207
3251
 
3208
- exports.zNullableBool = zNullableBool; exports.zNetGross = zNetGross; exports.zContactDTO = zContactDTO; exports.zMoneyObject = zMoneyObject; exports.contactAttributeSchema = contactAttributeSchema; exports.BaseModel = BaseModel; exports.mediaSchema = mediaSchema; exports.mediaCollection = mediaCollection; exports.impersonationParticipantSchema = impersonationParticipantSchema; exports.impersonationStateSchema = impersonationStateSchema; exports.userSchema = userSchema; exports.companyIdentitySchema = companyIdentitySchema; exports.companySchema = companySchema; exports.equipmentSchema = equipmentSchema; exports.gradingScalePointSchema = gradingScalePointSchema; exports.gradingScaleSchema = gradingScaleSchema; exports.GradingScaleFormSchema = GradingScaleFormSchema; exports.TrainingElementKindEnum = TrainingElementKindEnum; exports.trainingElementSchema = trainingElementSchema; exports.TrainingElementFormSchema = TrainingElementFormSchema; exports.SyllabusKindEnum = SyllabusKindEnum; exports.syllabusElementSchema = syllabusElementSchema; exports.AttachSyllabusElementFormSchema = AttachSyllabusElementFormSchema; exports.UpdateSyllabusElementFormSchema = UpdateSyllabusElementFormSchema; exports.ReorderSyllabusElementItemSchema = ReorderSyllabusElementItemSchema; exports.usedByCourseSchema = usedByCourseSchema; exports.syllabusSchema = syllabusSchema; exports.StoreSyllabusFormSchema = StoreSyllabusFormSchema; exports.UpdateSyllabusFormSchema = UpdateSyllabusFormSchema; exports.courseCheckSyllabusSchema = courseCheckSyllabusSchema; exports.syllabusElementMutationResultSchema = syllabusElementMutationResultSchema; exports.syllabusRolloutResultItemSchema = syllabusRolloutResultItemSchema; exports.syllabusRolloutSkippedItemSchema = syllabusRolloutSkippedItemSchema; exports.syllabusRolloutResultSchema = syllabusRolloutResultSchema; exports.EnrollmentTrainingStatusEnum = EnrollmentTrainingStatusEnum; exports.gradeHistoryItemSchema = gradeHistoryItemSchema; exports.enrollmentTrainingElementSchema = enrollmentTrainingElementSchema; exports.SignOffTrainingElementFormSchema = SignOffTrainingElementFormSchema; exports.TrainingRecordStatusEnum = TrainingRecordStatusEnum; exports.TrainingRecordResultEnum = TrainingRecordResultEnum; exports.trainingRecordEntrySchema = trainingRecordEntrySchema; exports.trainingRecordEntryInputSchema = trainingRecordEntryInputSchema; exports.trainingSignatureSchema = trainingSignatureSchema; exports.trainingRecordSchema = trainingRecordSchema; exports.UpsertTrainingRecordFormSchema = UpsertTrainingRecordFormSchema; exports.invalidateTrainingRecordResponseSchema = invalidateTrainingRecordResponseSchema; exports.trainingTemplatePackSchema = trainingTemplatePackSchema; exports.CreateSyllabusFromTemplateFormSchema = CreateSyllabusFromTemplateFormSchema; exports.createSyllabusFromTemplateResultSchema = createSyllabusFromTemplateResultSchema; exports.membershipIdentitySchema = membershipIdentitySchema; exports.nestedMembershipSchema = nestedMembershipSchema; exports.baseMembershipSchema = baseMembershipSchema; exports.membershipSchema = membershipSchema; exports.documentType = documentType; exports.priceSchema = priceSchema; exports.feeSchema = feeSchema; exports.feeCategoryOptionsSchema = feeCategoryOptionsSchema; exports.courseFeeSchema = courseFeeSchema; exports.fuelUnitSchema = fuelUnitSchema; exports.airplaneSchema = airplaneSchema; exports.aircraftPositionSchema = aircraftPositionSchema; exports.airplaneShareInviteSchema = airplaneShareInviteSchema; exports.airplanePermissionSchema = airplanePermissionSchema; exports.landingFeeSchema = landingFeeSchema; exports.aircraftRatingSchema = aircraftRatingSchema; exports.userAircraftRatingSchema = userAircraftRatingSchema; exports.userQualificationSchema = userQualificationSchema; exports.airportSchema = airportSchema; exports.recurringFlightSchema = recurringFlightSchema; exports.maintenanceEventSchema = maintenanceEventSchema; exports.maintenanceEventEstimationSchema = maintenanceEventEstimationSchema; exports.maintenanceStatusSchema = maintenanceStatusSchema; exports.extendedAirplaneSchema = extendedAirplaneSchema; exports.availSchema = availSchema; exports.bookingWaypointSchema = bookingWaypointSchema; exports.activitySchema = activitySchema; exports.bookingSchema = bookingSchema; exports.alertSchema = alertSchema; exports.documentSchema = documentSchema; exports.documentRequirement = documentRequirement; exports.documentRequirementGroup = documentRequirementGroup; exports.documentRequirementGroupAssignment = documentRequirementGroupAssignment; exports.documentComplianceStatus = documentComplianceStatus; exports.documentShareSchema = documentShareSchema; exports.allowedDocumentTypeSchema = allowedDocumentTypeSchema; exports.billingProfileSchema = billingProfileSchema; exports.flightLogSchema = flightLogSchema; exports.invoiceSchema = invoiceSchema; exports.scheduledFlightSchema = scheduledFlightSchema; exports.qualificationSchema = qualificationSchema; exports.expenseSchema = expenseSchema; exports.tagSchema = tagSchema; exports.courseSchema = courseSchema; exports.courseEnrollmentMetricsSchema = courseEnrollmentMetricsSchema; exports.courseEnrollmentSchema = courseEnrollmentSchema; exports.membershipSignupSchema = membershipSignupSchema; exports.eventSchema = eventSchema; exports.addressSchema = addressSchema; exports.roleSchema = roleSchema; exports.landingSchema = landingSchema; exports.ticketSchema = ticketSchema; exports.runwaySchema = runwaySchema; exports.settingSchema = settingSchema; exports.postSubjectSchema = postSubjectSchema; exports.postSchema = postSchema; exports.commentSchema = commentSchema; exports.airplaneIssueSeverityEnum = airplaneIssueSeverityEnum; exports.airplaneIssueStatusEnum = airplaneIssueStatusEnum; exports.airplaneIssueSchema = airplaneIssueSchema; exports.specialFlightSchema = specialFlightSchema; exports.prePaidPackageSchema = prePaidPackageSchema; exports.prePaidPackageAssignmentSchema = prePaidPackageAssignmentSchema; exports.expenseItemSchema = expenseItemSchema; exports.waypointSchema = waypointSchema; exports.approachTypeSchema = approachTypeSchema; exports.FaqStatus = FaqStatus; exports.FaqSchema = FaqSchema; exports.SubmitFaqQuestionSchema = SubmitFaqQuestionSchema; exports.ReviewFaqSchema = ReviewFaqSchema; exports.SafetyReportStatusEnum = SafetyReportStatusEnum; exports.SafetyReportCategorySchema = SafetyReportCategorySchema; exports.SafetyReportCategoryFormSchema = SafetyReportCategoryFormSchema; exports.SafetyReportMediaSchema = SafetyReportMediaSchema; exports.SafetyReportSchema = SafetyReportSchema; exports.SafetyReportListResponseSchema = SafetyReportListResponseSchema; exports.SafetyReportFormSchema = SafetyReportFormSchema; exports.SafetyReportUpdateSchema = SafetyReportUpdateSchema; exports.SafetyReportFilterSchema = SafetyReportFilterSchema; exports.SafetyReportSubmissionResponseSchema = SafetyReportSubmissionResponseSchema; exports.SAFETY_REPORT_STATUS_LABELS = SAFETY_REPORT_STATUS_LABELS; exports.SAFETY_REPORT_STATUS_COLORS = SAFETY_REPORT_STATUS_COLORS; exports.FormFieldType = FormFieldType; exports.FormSubmissionStatus = FormSubmissionStatus; exports.FormSubmissionSource = FormSubmissionSource; exports.FieldLabelSchema = FieldLabelSchema; exports.ShowWhenSchema = ShowWhenSchema; exports.SchemaFieldSchema = SchemaFieldSchema; exports.SchemaSectionSchema = SchemaSectionSchema; exports.TemplateSchemaSchema = TemplateSchemaSchema; exports.FormTemplateSchema = FormTemplateSchema; exports.FormTemplateAssignmentSchema = FormTemplateAssignmentSchema; exports.SignatureSchema = SignatureSchema; exports.SubmissionFileSchema = SubmissionFileSchema; exports.FormSubmissionShareBaseSchema = FormSubmissionShareBaseSchema; exports.FormSubmissionSchema = FormSubmissionSchema; exports.FormSubmissionShareSchema = FormSubmissionShareSchema; exports.RequiredFormViaCrewSchema = RequiredFormViaCrewSchema; exports.RequiredFormViaSchema = RequiredFormViaSchema; exports.RequiredFormSchema = RequiredFormSchema; exports.CourseMilestoneKindEnum = CourseMilestoneKindEnum; exports.courseMilestoneSchema = courseMilestoneSchema; exports.CourseMilestoneFormSchema = CourseMilestoneFormSchema; exports.courseEnrollmentMilestoneSchema = courseEnrollmentMilestoneSchema; exports.NewsletterBlockType = NewsletterBlockType; exports.TipTapNodeSchema = TipTapNodeSchema; exports.HeadingBlockSchema = HeadingBlockSchema; exports.ParagraphBlockSchema = ParagraphBlockSchema; exports.ButtonBlockSchema = ButtonBlockSchema; exports.DividerBlockSchema = DividerBlockSchema; exports.NewsletterBlockSchema = NewsletterBlockSchema; exports.NewsletterCategorySchema = NewsletterCategorySchema; exports.NewsletterTemplateSchemaSchema = NewsletterTemplateSchemaSchema; exports.NewsletterTemplateSchema = NewsletterTemplateSchema; exports.CreateNewsletterTemplateInputSchema = CreateNewsletterTemplateInputSchema; exports.AudienceBucketType = AudienceBucketType; exports.AllUsersBucketSchema = AllUsersBucketSchema; exports.CompanyUsersBucketSchema = CompanyUsersBucketSchema; exports.RoleMembersBucketSchema = RoleMembersBucketSchema; exports.AudienceBucketSchema = AudienceBucketSchema; exports.NewsletterAudienceSchema = NewsletterAudienceSchema; exports.companyAudienceInclude = companyAudienceInclude; exports.NewsletterCampaignStatus = NewsletterCampaignStatus; exports.NewsletterCampaignSchema = NewsletterCampaignSchema; exports.CreateNewsletterCampaignInputSchema = CreateNewsletterCampaignInputSchema; exports.NewsletterRecipientStatus = NewsletterRecipientStatus; exports.NewsletterCampaignRecipientSchema = NewsletterCampaignRecipientSchema; exports.NewsletterPreferenceRowSchema = NewsletterPreferenceRowSchema; exports.ALLOWED_NEWSLETTER_VARIABLES = ALLOWED_NEWSLETTER_VARIABLES; exports.LocationMapKind = LocationMapKind; exports.LocationFeatureVisibility = LocationFeatureVisibility; exports.ALLOWED_GEOMETRY_TYPES = ALLOWED_GEOMETRY_TYPES; exports.ViewportSchema = ViewportSchema; exports.GeometrySchema = GeometrySchema; exports.CreateLocationMapSchema = CreateLocationMapSchema; exports.UpdateLocationMapSchema = UpdateLocationMapSchema; exports.CreateLocationMapFeatureSchema = CreateLocationMapFeatureSchema; exports.UpdateLocationMapFeatureSchema = UpdateLocationMapFeatureSchema; exports.ImportFeaturesSchema = ImportFeaturesSchema; exports.TodoActionSchema = TodoActionSchema; exports.TodoKey = TodoKey; exports.TodoSchema = TodoSchema; exports.fboAcceptanceAxisSchema = fboAcceptanceAxisSchema; exports.fboAcceptanceStatusSchema = fboAcceptanceStatusSchema; exports.fboGroundServicesSchema = fboGroundServicesSchema; exports.fboFlightTypeSchema = fboFlightTypeSchema; exports.fboFlightStatusSchema = fboFlightStatusSchema; exports.fboOperationsSchema = fboOperationsSchema; exports.fboFlightCanSchema = fboFlightCanSchema; exports.fboRowCanSchema = fboRowCanSchema; exports.fboPobSchema = fboPobSchema; exports.fboPersonSchema = fboPersonSchema; exports.fboFlightDocumentSchema = fboFlightDocumentSchema; exports.fboFlightSchema = fboFlightSchema; exports.fboOccupationSchema = fboOccupationSchema; exports.fboRecurrenceTypeSchema = fboRecurrenceTypeSchema; exports.fboRecurrenceSchema = fboRecurrenceSchema; exports.fboDutyAffectedSchema = fboDutyAffectedSchema; exports.fboDutySchema = fboDutySchema; exports.fboDutySeriesResponseSchema = fboDutySeriesResponseSchema; exports.fboRoleSchema = fboRoleSchema; exports.fboCompanyProfileSchema = fboCompanyProfileSchema; exports.fboDecisionAxisSchema = fboDecisionAxisSchema; exports.fboDecisionSchema = fboDecisionSchema; exports.fboDecisionInputSchema = fboDecisionInputSchema; exports.fboVisibilitySchema = fboVisibilitySchema; exports.fboTrafficSourceSchema = fboTrafficSourceSchema; exports.fboTrafficRowTypeSchema = fboTrafficRowTypeSchema; exports.fboTrafficRowSchema = fboTrafficRowSchema; exports.fboTrafficLayerInputSchema = fboTrafficLayerInputSchema; exports.FBO_SYSTEM_ROLES = FBO_SYSTEM_ROLES; exports.fboSystemRoleSchema = fboSystemRoleSchema; exports.fboCompanyMemberSchema = fboCompanyMemberSchema; exports.fboNextDutySchema = fboNextDutySchema; exports.fboWeeklyLandingSchema = fboWeeklyLandingSchema; exports.fboLandingsSummarySchema = fboLandingsSummarySchema; exports.fboStatisticsSchema = fboStatisticsSchema; exports.fboActivityCauserSchema = fboActivityCauserSchema; exports.fboActivityChangesSchema = fboActivityChangesSchema; exports.fboActivitySchema = fboActivitySchema; exports.FBO_OPERATING_DAYS = FBO_OPERATING_DAYS; exports.fboRecurringFlightSchema = fboRecurringFlightSchema; exports.fboMaterialiseResultSchema = fboMaterialiseResultSchema; exports.fboGrantAbilitySchema = fboGrantAbilitySchema; exports.fboGrantAbilityOptionSchema = fboGrantAbilityOptionSchema; exports.fboGrantCompanyRefSchema = fboGrantCompanyRefSchema; exports.fboCompanyGrantSchema = fboCompanyGrantSchema; exports.fboCompanyGrantInputSchema = fboCompanyGrantInputSchema; exports.fboMetaSchema = fboMetaSchema; exports.fboCompanySchema = fboCompanySchema;
3252
+
3253
+ exports.zNullableBool = zNullableBool; exports.zNetGross = zNetGross; exports.zContactDTO = zContactDTO; exports.zMoneyObject = zMoneyObject; exports.contactAttributeSchema = contactAttributeSchema; exports.BaseModel = BaseModel; exports.mediaSchema = mediaSchema; exports.mediaCollection = mediaCollection; exports.impersonationParticipantSchema = impersonationParticipantSchema; exports.impersonationStateSchema = impersonationStateSchema; exports.userSchema = userSchema; exports.companyIdentitySchema = companyIdentitySchema; exports.companySchema = companySchema; exports.equipmentSchema = equipmentSchema; exports.gradingScalePointSchema = gradingScalePointSchema; exports.gradingScaleSchema = gradingScaleSchema; exports.GradingScaleFormSchema = GradingScaleFormSchema; exports.TrainingElementKindEnum = TrainingElementKindEnum; exports.trainingElementSchema = trainingElementSchema; exports.TrainingElementFormSchema = TrainingElementFormSchema; exports.SyllabusKindEnum = SyllabusKindEnum; exports.syllabusElementSchema = syllabusElementSchema; exports.AttachSyllabusElementFormSchema = AttachSyllabusElementFormSchema; exports.UpdateSyllabusElementFormSchema = UpdateSyllabusElementFormSchema; exports.ReorderSyllabusElementItemSchema = ReorderSyllabusElementItemSchema; exports.usedByCourseSchema = usedByCourseSchema; exports.syllabusSchema = syllabusSchema; exports.StoreSyllabusFormSchema = StoreSyllabusFormSchema; exports.UpdateSyllabusFormSchema = UpdateSyllabusFormSchema; exports.courseCheckSyllabusSchema = courseCheckSyllabusSchema; exports.syllabusElementMutationResultSchema = syllabusElementMutationResultSchema; exports.syllabusRolloutResultItemSchema = syllabusRolloutResultItemSchema; exports.syllabusRolloutSkippedItemSchema = syllabusRolloutSkippedItemSchema; exports.syllabusRolloutResultSchema = syllabusRolloutResultSchema; exports.EnrollmentTrainingStatusEnum = EnrollmentTrainingStatusEnum; exports.gradeHistoryItemSchema = gradeHistoryItemSchema; exports.enrollmentTrainingElementSchema = enrollmentTrainingElementSchema; exports.SignOffTrainingElementFormSchema = SignOffTrainingElementFormSchema; exports.TrainingRecordStatusEnum = TrainingRecordStatusEnum; exports.TrainingRecordResultEnum = TrainingRecordResultEnum; exports.trainingRecordEntrySchema = trainingRecordEntrySchema; exports.trainingRecordEntryInputSchema = trainingRecordEntryInputSchema; exports.trainingSignatureSchema = trainingSignatureSchema; exports.trainingRecordSchema = trainingRecordSchema; exports.UpsertTrainingRecordFormSchema = UpsertTrainingRecordFormSchema; exports.invalidateTrainingRecordResponseSchema = invalidateTrainingRecordResponseSchema; exports.trainingTemplatePackSchema = trainingTemplatePackSchema; exports.CreateSyllabusFromTemplateFormSchema = CreateSyllabusFromTemplateFormSchema; exports.createSyllabusFromTemplateResultSchema = createSyllabusFromTemplateResultSchema; exports.membershipIdentitySchema = membershipIdentitySchema; exports.nestedMembershipSchema = nestedMembershipSchema; exports.baseMembershipSchema = baseMembershipSchema; exports.membershipSchema = membershipSchema; exports.documentType = documentType; exports.priceSchema = priceSchema; exports.feeSchema = feeSchema; exports.feeCategoryOptionsSchema = feeCategoryOptionsSchema; exports.courseFeeSchema = courseFeeSchema; exports.fuelUnitSchema = fuelUnitSchema; exports.airplaneSchema = airplaneSchema; exports.aircraftPositionSchema = aircraftPositionSchema; exports.airplaneShareInviteSchema = airplaneShareInviteSchema; exports.airplanePermissionSchema = airplanePermissionSchema; exports.teachingPermissionSchema = teachingPermissionSchema; exports.landingFeeSchema = landingFeeSchema; exports.aircraftRatingSchema = aircraftRatingSchema; exports.userAircraftRatingSchema = userAircraftRatingSchema; exports.userQualificationSchema = userQualificationSchema; exports.airportSchema = airportSchema; exports.recurringFlightSchema = recurringFlightSchema; exports.maintenanceEventSchema = maintenanceEventSchema; exports.maintenanceEventEstimationSchema = maintenanceEventEstimationSchema; exports.maintenanceStatusSchema = maintenanceStatusSchema; exports.extendedAirplaneSchema = extendedAirplaneSchema; exports.availSchema = availSchema; exports.bookingWaypointSchema = bookingWaypointSchema; exports.activitySchema = activitySchema; exports.bookingSchema = bookingSchema; exports.alertSchema = alertSchema; exports.documentSchema = documentSchema; exports.documentRequirement = documentRequirement; exports.documentRequirementGroup = documentRequirementGroup; exports.documentRequirementGroupAssignment = documentRequirementGroupAssignment; exports.documentComplianceStatus = documentComplianceStatus; exports.documentShareSchema = documentShareSchema; exports.allowedDocumentTypeSchema = allowedDocumentTypeSchema; exports.billingProfileSchema = billingProfileSchema; exports.flightLogSchema = flightLogSchema; exports.invoiceSchema = invoiceSchema; exports.scheduledFlightSchema = scheduledFlightSchema; exports.qualificationSchema = qualificationSchema; exports.expenseSchema = expenseSchema; exports.tagSchema = tagSchema; exports.courseSchema = courseSchema; exports.courseEnrollmentMetricsSchema = courseEnrollmentMetricsSchema; exports.courseEnrollmentSchema = courseEnrollmentSchema; exports.membershipSignupSchema = membershipSignupSchema; exports.eventSchema = eventSchema; exports.addressSchema = addressSchema; exports.roleSchema = roleSchema; exports.landingSchema = landingSchema; exports.ticketSchema = ticketSchema; exports.runwaySchema = runwaySchema; exports.settingSchema = settingSchema; exports.postSubjectSchema = postSubjectSchema; exports.postSchema = postSchema; exports.commentSchema = commentSchema; exports.airplaneIssueSeverityEnum = airplaneIssueSeverityEnum; exports.airplaneIssueStatusEnum = airplaneIssueStatusEnum; exports.airplaneIssueSchema = airplaneIssueSchema; exports.specialFlightSchema = specialFlightSchema; exports.prePaidPackageSchema = prePaidPackageSchema; exports.prePaidPackageAssignmentSchema = prePaidPackageAssignmentSchema; exports.expenseItemSchema = expenseItemSchema; exports.waypointSchema = waypointSchema; exports.approachTypeSchema = approachTypeSchema; exports.FaqStatus = FaqStatus; exports.FaqSchema = FaqSchema; exports.SubmitFaqQuestionSchema = SubmitFaqQuestionSchema; exports.ReviewFaqSchema = ReviewFaqSchema; exports.SafetyReportStatusEnum = SafetyReportStatusEnum; exports.SafetyReportCategorySchema = SafetyReportCategorySchema; exports.SafetyReportCategoryFormSchema = SafetyReportCategoryFormSchema; exports.SafetyReportMediaSchema = SafetyReportMediaSchema; exports.SafetyReportSchema = SafetyReportSchema; exports.SafetyReportListResponseSchema = SafetyReportListResponseSchema; exports.SafetyReportFormSchema = SafetyReportFormSchema; exports.SafetyReportUpdateSchema = SafetyReportUpdateSchema; exports.SafetyReportFilterSchema = SafetyReportFilterSchema; exports.SafetyReportSubmissionResponseSchema = SafetyReportSubmissionResponseSchema; exports.SAFETY_REPORT_STATUS_LABELS = SAFETY_REPORT_STATUS_LABELS; exports.SAFETY_REPORT_STATUS_COLORS = SAFETY_REPORT_STATUS_COLORS; exports.FormFieldType = FormFieldType; exports.FormSubmissionStatus = FormSubmissionStatus; exports.FormSubmissionSource = FormSubmissionSource; exports.FieldLabelSchema = FieldLabelSchema; exports.ShowWhenSchema = ShowWhenSchema; exports.SchemaFieldSchema = SchemaFieldSchema; exports.SchemaSectionSchema = SchemaSectionSchema; exports.TemplateSchemaSchema = TemplateSchemaSchema; exports.FormTemplateSchema = FormTemplateSchema; exports.FormTemplateAssignmentSchema = FormTemplateAssignmentSchema; exports.SignatureSchema = SignatureSchema; exports.SubmissionFileSchema = SubmissionFileSchema; exports.FormSubmissionShareBaseSchema = FormSubmissionShareBaseSchema; exports.FormSubmissionSchema = FormSubmissionSchema; exports.FormSubmissionShareSchema = FormSubmissionShareSchema; exports.RequiredFormViaCrewSchema = RequiredFormViaCrewSchema; exports.RequiredFormViaSchema = RequiredFormViaSchema; exports.RequiredFormSchema = RequiredFormSchema; exports.CourseMilestoneKindEnum = CourseMilestoneKindEnum; exports.courseMilestoneSchema = courseMilestoneSchema; exports.CourseMilestoneFormSchema = CourseMilestoneFormSchema; exports.courseEnrollmentMilestoneSchema = courseEnrollmentMilestoneSchema; exports.NewsletterBlockType = NewsletterBlockType; exports.TipTapNodeSchema = TipTapNodeSchema; exports.HeadingBlockSchema = HeadingBlockSchema; exports.ParagraphBlockSchema = ParagraphBlockSchema; exports.ButtonBlockSchema = ButtonBlockSchema; exports.DividerBlockSchema = DividerBlockSchema; exports.NewsletterBlockSchema = NewsletterBlockSchema; exports.NewsletterCategorySchema = NewsletterCategorySchema; exports.NewsletterTemplateSchemaSchema = NewsletterTemplateSchemaSchema; exports.NewsletterTemplateSchema = NewsletterTemplateSchema; exports.CreateNewsletterTemplateInputSchema = CreateNewsletterTemplateInputSchema; exports.AudienceBucketType = AudienceBucketType; exports.AllUsersBucketSchema = AllUsersBucketSchema; exports.CompanyUsersBucketSchema = CompanyUsersBucketSchema; exports.RoleMembersBucketSchema = RoleMembersBucketSchema; exports.AudienceBucketSchema = AudienceBucketSchema; exports.NewsletterAudienceSchema = NewsletterAudienceSchema; exports.companyAudienceInclude = companyAudienceInclude; exports.NewsletterCampaignStatus = NewsletterCampaignStatus; exports.NewsletterCampaignSchema = NewsletterCampaignSchema; exports.CreateNewsletterCampaignInputSchema = CreateNewsletterCampaignInputSchema; exports.NewsletterRecipientStatus = NewsletterRecipientStatus; exports.NewsletterCampaignRecipientSchema = NewsletterCampaignRecipientSchema; exports.NewsletterPreferenceRowSchema = NewsletterPreferenceRowSchema; exports.ALLOWED_NEWSLETTER_VARIABLES = ALLOWED_NEWSLETTER_VARIABLES; exports.LocationMapKind = LocationMapKind; exports.LocationFeatureVisibility = LocationFeatureVisibility; exports.ALLOWED_GEOMETRY_TYPES = ALLOWED_GEOMETRY_TYPES; exports.ViewportSchema = ViewportSchema; exports.GeometrySchema = GeometrySchema; exports.CreateLocationMapSchema = CreateLocationMapSchema; exports.UpdateLocationMapSchema = UpdateLocationMapSchema; exports.CreateLocationMapFeatureSchema = CreateLocationMapFeatureSchema; exports.UpdateLocationMapFeatureSchema = UpdateLocationMapFeatureSchema; exports.ImportFeaturesSchema = ImportFeaturesSchema; exports.TodoActionSchema = TodoActionSchema; exports.TodoKey = TodoKey; exports.TodoSchema = TodoSchema; exports.fboAcceptanceAxisSchema = fboAcceptanceAxisSchema; exports.fboAcceptanceStatusSchema = fboAcceptanceStatusSchema; exports.fboGroundServicesSchema = fboGroundServicesSchema; exports.fboFlightTypeSchema = fboFlightTypeSchema; exports.fboFlightStatusSchema = fboFlightStatusSchema; exports.fboOperationsSchema = fboOperationsSchema; exports.fboFlightCanSchema = fboFlightCanSchema; exports.fboRowCanSchema = fboRowCanSchema; exports.fboPobSchema = fboPobSchema; exports.fboPersonSchema = fboPersonSchema; exports.fboFlightDocumentSchema = fboFlightDocumentSchema; exports.fboFlightSchema = fboFlightSchema; exports.fboOccupationSchema = fboOccupationSchema; exports.fboRecurrenceTypeSchema = fboRecurrenceTypeSchema; exports.fboRecurrenceSchema = fboRecurrenceSchema; exports.fboDutyAffectedSchema = fboDutyAffectedSchema; exports.fboDutySchema = fboDutySchema; exports.fboDutySeriesResponseSchema = fboDutySeriesResponseSchema; exports.fboRoleSchema = fboRoleSchema; exports.fboCompanyProfileSchema = fboCompanyProfileSchema; exports.fboDecisionAxisSchema = fboDecisionAxisSchema; exports.fboDecisionSchema = fboDecisionSchema; exports.fboDecisionInputSchema = fboDecisionInputSchema; exports.fboVisibilitySchema = fboVisibilitySchema; exports.fboTrafficSourceSchema = fboTrafficSourceSchema; exports.fboTrafficRowTypeSchema = fboTrafficRowTypeSchema; exports.fboTrafficRowSchema = fboTrafficRowSchema; exports.fboTrafficLayerInputSchema = fboTrafficLayerInputSchema; exports.FBO_SYSTEM_ROLES = FBO_SYSTEM_ROLES; exports.fboSystemRoleSchema = fboSystemRoleSchema; exports.fboCompanyMemberSchema = fboCompanyMemberSchema; exports.fboNextDutySchema = fboNextDutySchema; exports.fboWeeklyLandingSchema = fboWeeklyLandingSchema; exports.fboLandingsSummarySchema = fboLandingsSummarySchema; exports.fboStatisticsSchema = fboStatisticsSchema; exports.fboActivityCauserSchema = fboActivityCauserSchema; exports.fboActivityChangesSchema = fboActivityChangesSchema; exports.fboActivitySchema = fboActivitySchema; exports.FBO_OPERATING_DAYS = FBO_OPERATING_DAYS; exports.fboRecurringFlightSchema = fboRecurringFlightSchema; exports.fboMaterialiseResultSchema = fboMaterialiseResultSchema; exports.fboGrantAbilitySchema = fboGrantAbilitySchema; exports.fboGrantAbilityOptionSchema = fboGrantAbilityOptionSchema; exports.fboGrantCompanyRefSchema = fboGrantCompanyRefSchema; exports.fboCompanyGrantSchema = fboCompanyGrantSchema; exports.fboCompanyGrantInputSchema = fboCompanyGrantInputSchema; exports.fboMetaSchema = fboMetaSchema; exports.fboCompanySchema = fboCompanySchema;
@@ -61,7 +61,11 @@ var impersonationStateSchema = z.object({
61
61
  var userSchema = z.object({
62
62
  type: z.literal("user"),
63
63
  id: z.number(),
64
- name: z.string(),
64
+ // name/firstname/lastname are gate-guarded server-side exactly like
65
+ // email/mobile below (a `viewName` policy decision, driven by the member's
66
+ // own `name.visibility` setting) and go null TOGETHER when denied. Render
67
+ // a placeholder via a display-name helper — never a bare `user.name`.
68
+ name: z.string().nullable(),
65
69
  firstname: z.string().nullable().optional(),
66
70
  lastname: z.string().nullable().optional(),
67
71
  // email/mobile are gate-guarded server-side (viewMail/viewMobile) and come
@@ -505,7 +509,13 @@ var membershipIdentitySchema = z4.object({
505
509
  user_id: z4.number(),
506
510
  user: userSchema.optional(),
507
511
  company_id: z4.number(),
508
- name: z4.string()
512
+ // The member's display name, lifted off the user row — and gate-guarded on
513
+ // the way, exactly like `userSchema.name`: `MembershipResource` and
514
+ // `MembershipIdentityResource` both run it through `UserPolicy::viewName`
515
+ // (driven by the member's own `name.visibility` setting, default `*`) and
516
+ // send `null` when denied. Render a placeholder, never a bare
517
+ // `membership.name`.
518
+ name: z4.string().nullable()
509
519
  });
510
520
  var nestedMembershipSchema = membershipIdentitySchema.extend({
511
521
  company: companyIdentitySchema.nullable().optional()
@@ -740,6 +750,25 @@ var airplanePermissionSchema = z4.object({
740
750
  delete: zNullableBool
741
751
  }).optional()
742
752
  });
753
+ var teachingPermissionSchema = z4.object({
754
+ type: z4.literal("teaching_permission"),
755
+ id: z4.number(),
756
+ course_id: z4.number(),
757
+ course: z4.object({ id: z4.number(), name: z4.string() }).passthrough().optional(),
758
+ membership_id: z4.number(),
759
+ membership: nestedMembershipSchema.optional(),
760
+ status: z4.enum(["pending", "approved"]),
761
+ is_active: z4.boolean(),
762
+ expires_at: z4.string().nullable().optional(),
763
+ notes: z4.string().nullable().optional(),
764
+ conditions: z4.string().nullable().optional(),
765
+ requested_by: userSchema.nullable().optional(),
766
+ approved_by: userSchema.nullable().optional(),
767
+ approved_at: z4.string().nullable().optional(),
768
+ created_at: z4.string(),
769
+ updated_at: z4.string(),
770
+ can: z4.object({ view: zNullableBool, update: zNullableBool, delete: zNullableBool, approve: zNullableBool }).optional()
771
+ });
743
772
  var landingFeeSchema = z4.object({
744
773
  id: z4.number(),
745
774
  airplane_id: z4.number(),
@@ -1393,6 +1422,9 @@ var courseEnrollmentSchema = z4.object({
1393
1422
  membership_id: z4.number(),
1394
1423
  company_id: z4.number(),
1395
1424
  mentor_id: z4.number().nullable().optional(),
1425
+ // Default billing profile of the enrollment (null = the member's default);
1426
+ // the initial-fee items are billed to it.
1427
+ billing_profile_id: z4.number().nullable().optional(),
1396
1428
  status: z4.enum(["enrolled", "completed", "cancelled", "suspended"]),
1397
1429
  enrollment_date: z4.string(),
1398
1430
  completion_date: z4.string().nullable().optional(),
@@ -1410,6 +1442,7 @@ var courseEnrollmentSchema = z4.object({
1410
1442
  course: courseSchema.optional(),
1411
1443
  membership: nestedMembershipSchema.optional(),
1412
1444
  mentor: userSchema.optional(),
1445
+ billingProfile: billingProfileSchema.nullable().optional(),
1413
1446
  // Present when eager-loaded (BaseCourseEnrollmentResource). Lazy: both
1414
1447
  // schemas are declared later in this file; there is no true cycle.
1415
1448
  expense_items: z4.array(z4.lazy(() => expenseItemSchema)).optional(),
@@ -1775,8 +1808,8 @@ var FaqStatus = /* @__PURE__ */ ((FaqStatus2) => {
1775
1808
  })(FaqStatus || {});
1776
1809
  var UserBasicSchema = z5.object({
1777
1810
  id: z5.number(),
1778
- name: z5.string(),
1779
- email: z5.string().email()
1811
+ name: z5.string().nullable(),
1812
+ email: z5.string().email().nullable()
1780
1813
  }).nullable();
1781
1814
  var FaqSchema = z5.object({
1782
1815
  type: z5.literal("faq"),
@@ -2704,8 +2737,19 @@ var fboFlightSchema = z12.object({
2704
2737
  wx: z12.boolean(),
2705
2738
  landings: z12.number().nullable(),
2706
2739
  remarks: z12.string().nullable(),
2707
- // Null on an assigned company's booking rendered as a movement (see `source`).
2708
- contact: zContactDTO.nullable(),
2740
+ /**
2741
+ * The filer's contact block. Own-row tier since the 2026-08 hardening: the
2742
+ * key is OMITTED for a reader who is neither the movement's author, a root
2743
+ * decider, nor in `assigned_user_ids` — a tenant colleague browsing a
2744
+ * movement they did not file no longer receives it. Still explicitly `null`
2745
+ * on an assigned company's booking rendered as a movement (see `source`),
2746
+ * so BOTH `undefined` and `null` occur and consumers must use `contact?.…`.
2747
+ *
2748
+ * A client that backfills an empty block to bind a form to must key that on
2749
+ * the KEY BEING PRESENT — `UpdateFlightRequest` accepts `contact` from any
2750
+ * updater, so sending a seeded blank would erase the author's data.
2751
+ */
2752
+ contact: zContactDTO.nullable().optional(),
2709
2753
  ground_services: fboGroundServicesSchema.nullable(),
2710
2754
  acceptance_status: fboAcceptanceStatusSchema,
2711
2755
  /** Own/details tier. `null` when neither dropzone window nor apron is set. */
@@ -3029,6 +3073,7 @@ export {
3029
3073
  aircraftPositionSchema,
3030
3074
  airplaneShareInviteSchema,
3031
3075
  airplanePermissionSchema,
3076
+ teachingPermissionSchema,
3032
3077
  landingFeeSchema,
3033
3078
  aircraftRatingSchema,
3034
3079
  userAircraftRatingSchema,