@thejob/schema 2.1.2 → 2.1.4

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.cts CHANGED
@@ -1474,6 +1474,180 @@ declare const DefaultPaginationOptions: {
1474
1474
  limit: number;
1475
1475
  };
1476
1476
 
1477
+ declare enum UserRole {
1478
+ Admin = "admin",
1479
+ Moderator = "moderator",
1480
+ Manager = "manager",
1481
+ Recruiter = "recruiter",
1482
+ JobSeeker = "job_seeker",
1483
+ Coordinator = "coordinator",
1484
+ System = "system",
1485
+ Normal = "normal"
1486
+ }
1487
+ declare const SupportedUserRoles: UserRole[];
1488
+ declare enum UserStatus {
1489
+ Active = "active",
1490
+ Blocked = "blocked",
1491
+ Pending = "pending",
1492
+ Deleted = "deleted",
1493
+ MarkedForDeletion = "marked_for_deletion"
1494
+ }
1495
+ declare const SupportedUserStatuses: UserStatus[];
1496
+ declare const DefaultUserRoles: UserRole[];
1497
+ declare enum UserProfileVisibility {
1498
+ Public = "public",
1499
+ Private = "private",
1500
+ Hidden = "hidden"
1501
+ }
1502
+ declare const SupportedUserProfileVisibilities: UserProfileVisibility[];
1503
+ declare enum UserDetailType {
1504
+ Overview = "overview",
1505
+ AdditionalInfo = "additionalInfo",
1506
+ General = "general",
1507
+ SocialAccounts = "socialAccounts",
1508
+ WorkExperiences = "workExperiences",
1509
+ Educations = "educations",
1510
+ Skills = "skills",
1511
+ Languages = "languages",
1512
+ Certifications = "certifications",
1513
+ Interests = "interests",
1514
+ Projects = "projects"
1515
+ }
1516
+ declare enum ProficiencyLevel {
1517
+ BasicAwareness = "basic_awareness",
1518
+ Beginner = "beginner",
1519
+ Intermediate = "intermediate",
1520
+ Advanced = "advanced",
1521
+ Expert = "expert"
1522
+ }
1523
+ declare const SupportedProficiencyLevels: ProficiencyLevel[];
1524
+ declare enum JobSearchUrgency {
1525
+ Asap = "asap",
1526
+ WithinThreeMonths = "within_3_months",
1527
+ WithinSixMonths = "within_6_months",
1528
+ PassivelyBrowsing = "passively_browsing"
1529
+ }
1530
+ declare const SupportedJobSearchUrgencies: JobSearchUrgency[];
1531
+ /**
1532
+ * How the user heard about the platform - captured at the end of onboarding
1533
+ * for marketing attribution.
1534
+ */
1535
+ declare enum ReferralSource {
1536
+ Recruiter = "recruiter",
1537
+ LinkedIn = "linkedin",
1538
+ TikTokInstagram = "tiktok_instagram",
1539
+ Google = "google",
1540
+ Reddit = "reddit",
1541
+ ChatGptGemini = "chatgpt_gemini",
1542
+ Friend = "friend",
1543
+ Other = "other"
1544
+ }
1545
+ declare const SupportedReferralSources: ReferralSource[];
1546
+ /**
1547
+ * How often a subscribed user receives job-alert emails. `Off` disables job
1548
+ * alerts specifically while leaving other marketing (newsletters, product
1549
+ * updates) governed by `marketingConsent.subscribed`.
1550
+ */
1551
+ declare enum JobAlertFrequency {
1552
+ Off = "off",
1553
+ Daily = "daily",
1554
+ Weekly = "weekly"
1555
+ }
1556
+ declare const SupportedJobAlertFrequencies: JobAlertFrequency[];
1557
+ /**
1558
+ * Channels of NOTIFICATION email — mail about activity on the user's own
1559
+ * account (a group invite, a job of theirs expiring). Distinct from marketing:
1560
+ * notifications are opt-OUT (default on, see `notificationPrefs`), marketing is
1561
+ * opt-IN (`marketingConsent.subscribed`). Transactional mail (magic-link,
1562
+ * verification) is governed by neither and always sends.
1563
+ *
1564
+ * Deliberately coarse: four channels a user will actually reason about, rather
1565
+ * than one toggle per email template.
1566
+ */
1567
+ declare enum NotificationChannel {
1568
+ /** Group invites, join requests, membership approved/rejected. */
1569
+ GroupActivity = "groupActivity",
1570
+ /** Activity on jobs the user posted, e.g. a listing expiring. */
1571
+ JobActivity = "jobActivity",
1572
+ /** Status changes on jobs the user applied to. */
1573
+ ApplicationUpdates = "applicationUpdates",
1574
+ /** Product announcements and feature news. */
1575
+ ProductUpdates = "productUpdates"
1576
+ }
1577
+ declare const SupportedNotificationChannels: NotificationChannel[];
1578
+ /** ISO-4217 currency codes accepted for the salary preference (extend as needed). */
1579
+ declare const SupportedSalaryCurrencies: readonly ["USD", "EUR", "GBP", "SEK", "INR"];
1580
+ type SupportedSalaryCurrency = (typeof SupportedSalaryCurrencies)[number];
1581
+ /** Bounds enforced server-side on the minimum-salary slider. */
1582
+ declare const MIN_SALARY_LOWER_BOUND = 0;
1583
+ declare const MIN_SALARY_UPPER_BOUND = 1000000;
1584
+ /**
1585
+ * Profile fields whose confirmed write should drain the resume-parser's
1586
+ * suggestion. When the user accepts/edits one of these, the matching
1587
+ * `pendingPrefill.<key>` is unset in the same write so the "Suggestion"
1588
+ * affordance disappears on the next load ("confirmed beats prefill").
1589
+ */
1590
+ declare const PREFILL_MIRRORED_KEYS: readonly ["headline", "aboutMe", "mobile", "location", "experienceLevel", "socialAccounts", "workExperiences", "educations"];
1591
+ type PrefillMirroredKey = (typeof PREFILL_MIRRORED_KEYS)[number];
1592
+ /**
1593
+ * Fields stripped from a public (non-owner) profile read. A public profile must
1594
+ * never expose these regardless of the caller's requested `fields`.
1595
+ */
1596
+ declare const PRIVATE_PROFILE_FIELDS: readonly ["email", "emailVerified", "mobile", "additionalInfo"];
1597
+ type PrivateProfileField = (typeof PRIVATE_PROFILE_FIELDS)[number];
1598
+
1599
+ /**
1600
+ * Lifecycle of a saved search. Lowercase values, like every other enum in this
1601
+ * package: the string is stored in Mongo and compared as a literal across
1602
+ * services, so its casing is data rather than style.
1603
+ */
1604
+ declare enum SavedSearchStatus {
1605
+ /** Matching runs and alerts may be sent. */
1606
+ Active = "active",
1607
+ /**
1608
+ * Kept for the user to see and re-enable, but skipped by the matching sweep.
1609
+ * Distinct from deleting: a user pausing alerts should not lose the query they
1610
+ * spent time building.
1611
+ */
1612
+ Paused = "paused"
1613
+ }
1614
+ declare const SupportedSavedSearchStatuses: SavedSearchStatus[];
1615
+
1616
+ /**
1617
+ * A search a user asked to be kept, and optionally to be alerted about.
1618
+ *
1619
+ * Two jobs in one document, deliberately: the query the user built, and the
1620
+ * cadence at which they want it re-run for them. Splitting them would mean a
1621
+ * user with three saved searches and one alert preference has no way to say
1622
+ * which search the alert is for.
1623
+ *
1624
+ * The stored query mirrors what `GET /jobs/search-v3` accepts — a free-text
1625
+ * `search` plus a `filter` map — so replaying a saved search is running the same
1626
+ * search the user originally ran, not a second, subtly different implementation
1627
+ * that drifts from it.
1628
+ */
1629
+ declare const SavedSearchSchema: yup.ObjectSchema<{
1630
+ shortId: string | undefined;
1631
+ ownerUserId: string | undefined;
1632
+ label: string;
1633
+ search: string | undefined;
1634
+ filter: {};
1635
+ frequency: JobAlertFrequency;
1636
+ status: SavedSearchStatus;
1637
+ lastNotifiedAt: number | undefined;
1638
+ lastMatchedAt: number | undefined;
1639
+ }, yup.AnyObject, {
1640
+ shortId: undefined;
1641
+ ownerUserId: undefined;
1642
+ label: undefined;
1643
+ search: undefined;
1644
+ filter: {};
1645
+ frequency: JobAlertFrequency.Off;
1646
+ status: SavedSearchStatus.Active;
1647
+ lastNotifiedAt: undefined;
1648
+ lastMatchedAt: undefined;
1649
+ }, "">;
1650
+
1477
1651
  declare enum ResourceType {
1478
1652
  Job = "job",
1479
1653
  User = "user",
@@ -1609,107 +1783,6 @@ declare const SocialAccountSchema: yup.ObjectSchema<{
1609
1783
  url: undefined;
1610
1784
  }, "">;
1611
1785
 
1612
- declare enum UserRole {
1613
- Admin = "admin",
1614
- Moderator = "moderator",
1615
- Manager = "manager",
1616
- Recruiter = "recruiter",
1617
- JobSeeker = "job_seeker",
1618
- Coordinator = "coordinator",
1619
- System = "system",
1620
- Normal = "normal"
1621
- }
1622
- declare const SupportedUserRoles: UserRole[];
1623
- declare enum UserStatus {
1624
- Active = "active",
1625
- Blocked = "blocked",
1626
- Pending = "pending",
1627
- Deleted = "deleted",
1628
- MarkedForDeletion = "marked_for_deletion"
1629
- }
1630
- declare const SupportedUserStatuses: UserStatus[];
1631
- declare const DefaultUserRoles: UserRole[];
1632
- declare enum UserProfileVisibility {
1633
- Public = "public",
1634
- Private = "private",
1635
- Hidden = "hidden"
1636
- }
1637
- declare const SupportedUserProfileVisibilities: UserProfileVisibility[];
1638
- declare enum UserDetailType {
1639
- Overview = "overview",
1640
- AdditionalInfo = "additionalInfo",
1641
- General = "general",
1642
- SocialAccounts = "socialAccounts",
1643
- WorkExperiences = "workExperiences",
1644
- Educations = "educations",
1645
- Skills = "skills",
1646
- Languages = "languages",
1647
- Certifications = "certifications",
1648
- Interests = "interests",
1649
- Projects = "projects"
1650
- }
1651
- declare enum ProficiencyLevel {
1652
- BasicAwareness = "basic_awareness",
1653
- Beginner = "beginner",
1654
- Intermediate = "intermediate",
1655
- Advanced = "advanced",
1656
- Expert = "expert"
1657
- }
1658
- declare const SupportedProficiencyLevels: ProficiencyLevel[];
1659
- declare enum JobSearchUrgency {
1660
- Asap = "asap",
1661
- WithinThreeMonths = "within_3_months",
1662
- WithinSixMonths = "within_6_months",
1663
- PassivelyBrowsing = "passively_browsing"
1664
- }
1665
- declare const SupportedJobSearchUrgencies: JobSearchUrgency[];
1666
- /**
1667
- * How the user heard about the platform - captured at the end of onboarding
1668
- * for marketing attribution.
1669
- */
1670
- declare enum ReferralSource {
1671
- Recruiter = "recruiter",
1672
- LinkedIn = "linkedin",
1673
- TikTokInstagram = "tiktok_instagram",
1674
- Google = "google",
1675
- Reddit = "reddit",
1676
- ChatGptGemini = "chatgpt_gemini",
1677
- Friend = "friend",
1678
- Other = "other"
1679
- }
1680
- declare const SupportedReferralSources: ReferralSource[];
1681
- /**
1682
- * How often a subscribed user receives job-alert emails. `Off` disables job
1683
- * alerts specifically while leaving other marketing (newsletters, product
1684
- * updates) governed by `marketingConsent.subscribed`.
1685
- */
1686
- declare enum JobAlertFrequency {
1687
- Off = "off",
1688
- Daily = "daily",
1689
- Weekly = "weekly"
1690
- }
1691
- declare const SupportedJobAlertFrequencies: JobAlertFrequency[];
1692
- /** ISO-4217 currency codes accepted for the salary preference (extend as needed). */
1693
- declare const SupportedSalaryCurrencies: readonly ["USD", "EUR", "GBP", "SEK", "INR"];
1694
- type SupportedSalaryCurrency = (typeof SupportedSalaryCurrencies)[number];
1695
- /** Bounds enforced server-side on the minimum-salary slider. */
1696
- declare const MIN_SALARY_LOWER_BOUND = 0;
1697
- declare const MIN_SALARY_UPPER_BOUND = 1000000;
1698
- /**
1699
- * Profile fields whose confirmed write should drain the resume-parser's
1700
- * suggestion. When the user accepts/edits one of these, the matching
1701
- * `pendingPrefill.<key>` is unset in the same write so the "Suggestion"
1702
- * affordance disappears on the next load ("confirmed beats prefill").
1703
- */
1704
- declare const PREFILL_MIRRORED_KEYS: readonly ["headline", "aboutMe", "mobile", "location", "experienceLevel", "socialAccounts", "workExperiences", "educations"];
1705
- type PrefillMirroredKey = (typeof PREFILL_MIRRORED_KEYS)[number];
1706
- /**
1707
- * Fields stripped from a public (non-owner) profile read. A public profile must
1708
- * never expose these regardless of the caller's requested `fields`.
1709
- */
1710
- declare const PRIVATE_PROFILE_FIELDS: readonly ["email", "emailVerified", "mobile", "additionalInfo"];
1711
- type PrivateProfileField = (typeof PRIVATE_PROFILE_FIELDS)[number];
1712
-
1713
1786
  declare const UserSchema: yup.ObjectSchema<{
1714
1787
  authAccountId: string;
1715
1788
  socialAccounts: {
@@ -1823,6 +1896,12 @@ declare const UserSchema: yup.ObjectSchema<{
1823
1896
  jobAlertFrequency?: JobAlertFrequency | undefined;
1824
1897
  subscribed: boolean;
1825
1898
  };
1899
+ notificationPrefs: {
1900
+ groupActivity: boolean;
1901
+ jobActivity: boolean;
1902
+ applicationUpdates: boolean;
1903
+ productUpdates: boolean;
1904
+ };
1826
1905
  embedding: {
1827
1906
  vector?: number[] | undefined;
1828
1907
  model?: string | undefined;
@@ -2022,6 +2101,12 @@ declare const UserSchema: yup.ObjectSchema<{
2022
2101
  marketingConsent: {
2023
2102
  subscribed: boolean;
2024
2103
  };
2104
+ notificationPrefs: {
2105
+ groupActivity: boolean;
2106
+ jobActivity: boolean;
2107
+ applicationUpdates: boolean;
2108
+ productUpdates: boolean;
2109
+ };
2025
2110
  embedding: {
2026
2111
  vector: undefined;
2027
2112
  model: undefined;
@@ -2910,4 +2995,4 @@ declare const StudentCompletenessSchema: yup.ObjectSchema<{
2910
2995
  };
2911
2996
  }, "">;
2912
2997
 
2913
- export { AnswerChoiceType, ApplicationReceivePreference, CampaignSchema, CampaignStatus, ChoiceQuestionSchema, Common, CompensationType, CompletenessScoreSchema, ContactTypes, CoordinatorPageLinkSchema, DISPLAY_DATE_FORMAT, DISPLAY_DATE_FORMAT_SHORT, DateStringSchema, DbDefaultSchema, DefaultPaginatedResponse, DefaultPaginationOptions, DefaultUserRoles, DurationSchema, EMPTY_STRING, EducationLevel, EducationSchema, EmployeeCount, EmploymentType, ExperienceLevel, FEEDBACK_MESSAGE_MAX, FeedbackSchema, FeedbackStatus, FeedbackType, GeneraDetailFields, GroupManagedBy, GroupMembershipSchema, GroupMembershipStatus, GroupSchema, GroupStatus, GroupTranslationSchema, GroupVisibility, InputQuestionSchema, JOB_TAXONOMY, JobAlertFrequency, JobCategory, JobIndustry, JobSchema, JobSearchUrgency, JobStatus, JobSubCategory, ListFilterSchema, LocationSchema, MIN_SALARY_LOWER_BOUND, MIN_SALARY_UPPER_BOUND, MailingListSchema, PREFILL_MIRRORED_KEYS, PRIVATE_PROFILE_FIELDS, PageSchema, PageStatus, PageType, type PaginatedResponse, PaginationSchema, PostSchema, PostStatus, type PrefillMirroredKey, type PrivateProfileField, ProficiencyLevel, QuestionSchema, QuestionType, ReadAndAcknowledgeQuestionSchema, RecruiterPageLinkSchema, ReferralSource, ReportReason, ReportSchema, ResourceType, SITEMAP_FORMAT, SYSTEM_DATE_FORMAT, SkillSchema, SocialAccount, SocialAccountSchema, StudentCompletenessSchema, StudyType, SupportedAnswerChoiceTypes, SupportedApplicationReceivePreferences, SupportedCampaignStatuses, SupportedCompensationTypes, SupportedContactTypes, SupportedEducationLevels, SupportedEmployeeCounts, SupportedEmploymentTypes, SupportedExperienceLevels, SupportedFeedbackStatuses, SupportedFeedbackTypes, SupportedJobAlertFrequencies, SupportedJobCategories, SupportedJobIndustries, SupportedJobSearchUrgencies, SupportedJobStatuses, SupportedJobSubCategories, SupportedPageStatuses, SupportedPageTypes, SupportedPostStatuses, SupportedProficiencyLevels, SupportedQuestionTypes, SupportedReferralSources, SupportedReportReasons, SupportedResourceTypes, SupportedSalaryCurrencies, type SupportedSalaryCurrency, SupportedSocialAccounts, SupportedStudyTypes, SupportedUserProfileVisibilities, SupportedUserRoles, SupportedUserStatuses, SupportedWorkModes, TAXONOMY_LABELS, type TChoiceQuestionSchema, type TDurationSchema, type TInputQuestionSchema, type TJobSchema, type TPostSchema, type TQuestionSchema, type TReadAndAcknowledgeQuestionSchema, type TUserIdAndCreatedAtSchema, TermsAcceptedSchema, UserAdditionalInfoSchema, UserCertificationSchema, UserCompletenessSchema, UserCoordinatorProfileSchema, UserDetailType, UserGeneralDetailSchema, UserIdAndCreatedAtSchema, UserInterestSchema, UserJobPreferencesSchema, UserLanguageSchema, type UserProfileOverview, UserProfileVisibility, UserProjectSchema, UserRecruiterProfileSchema, UserRole, UserSchema, UserSkillSchema, UserStatus, WorkExperienceSchema, WorkMode, categoryOfIndustry, categoryOfSubCategory, dateString, deriveIndustry, getSchemaByQuestion, industriesOfCategory, industryOfSubCategory, subCategoriesOfIndustry };
2998
+ export { AnswerChoiceType, ApplicationReceivePreference, CampaignSchema, CampaignStatus, ChoiceQuestionSchema, Common, CompensationType, CompletenessScoreSchema, ContactTypes, CoordinatorPageLinkSchema, DISPLAY_DATE_FORMAT, DISPLAY_DATE_FORMAT_SHORT, DateStringSchema, DbDefaultSchema, DefaultPaginatedResponse, DefaultPaginationOptions, DefaultUserRoles, DurationSchema, EMPTY_STRING, EducationLevel, EducationSchema, EmployeeCount, EmploymentType, ExperienceLevel, FEEDBACK_MESSAGE_MAX, FeedbackSchema, FeedbackStatus, FeedbackType, GeneraDetailFields, GroupManagedBy, GroupMembershipSchema, GroupMembershipStatus, GroupSchema, GroupStatus, GroupTranslationSchema, GroupVisibility, InputQuestionSchema, JOB_TAXONOMY, JobAlertFrequency, JobCategory, JobIndustry, JobSchema, JobSearchUrgency, JobStatus, JobSubCategory, ListFilterSchema, LocationSchema, MIN_SALARY_LOWER_BOUND, MIN_SALARY_UPPER_BOUND, MailingListSchema, NotificationChannel, PREFILL_MIRRORED_KEYS, PRIVATE_PROFILE_FIELDS, PageSchema, PageStatus, PageType, type PaginatedResponse, PaginationSchema, PostSchema, PostStatus, type PrefillMirroredKey, type PrivateProfileField, ProficiencyLevel, QuestionSchema, QuestionType, ReadAndAcknowledgeQuestionSchema, RecruiterPageLinkSchema, ReferralSource, ReportReason, ReportSchema, ResourceType, SITEMAP_FORMAT, SYSTEM_DATE_FORMAT, SavedSearchSchema, SavedSearchStatus, SkillSchema, SocialAccount, SocialAccountSchema, StudentCompletenessSchema, StudyType, SupportedAnswerChoiceTypes, SupportedApplicationReceivePreferences, SupportedCampaignStatuses, SupportedCompensationTypes, SupportedContactTypes, SupportedEducationLevels, SupportedEmployeeCounts, SupportedEmploymentTypes, SupportedExperienceLevels, SupportedFeedbackStatuses, SupportedFeedbackTypes, SupportedJobAlertFrequencies, SupportedJobCategories, SupportedJobIndustries, SupportedJobSearchUrgencies, SupportedJobStatuses, SupportedJobSubCategories, SupportedNotificationChannels, SupportedPageStatuses, SupportedPageTypes, SupportedPostStatuses, SupportedProficiencyLevels, SupportedQuestionTypes, SupportedReferralSources, SupportedReportReasons, SupportedResourceTypes, SupportedSalaryCurrencies, type SupportedSalaryCurrency, SupportedSavedSearchStatuses, SupportedSocialAccounts, SupportedStudyTypes, SupportedUserProfileVisibilities, SupportedUserRoles, SupportedUserStatuses, SupportedWorkModes, TAXONOMY_LABELS, type TChoiceQuestionSchema, type TDurationSchema, type TInputQuestionSchema, type TJobSchema, type TPostSchema, type TQuestionSchema, type TReadAndAcknowledgeQuestionSchema, type TUserIdAndCreatedAtSchema, TermsAcceptedSchema, UserAdditionalInfoSchema, UserCertificationSchema, UserCompletenessSchema, UserCoordinatorProfileSchema, UserDetailType, UserGeneralDetailSchema, UserIdAndCreatedAtSchema, UserInterestSchema, UserJobPreferencesSchema, UserLanguageSchema, type UserProfileOverview, UserProfileVisibility, UserProjectSchema, UserRecruiterProfileSchema, UserRole, UserSchema, UserSkillSchema, UserStatus, WorkExperienceSchema, WorkMode, categoryOfIndustry, categoryOfSubCategory, dateString, deriveIndustry, getSchemaByQuestion, industriesOfCategory, industryOfSubCategory, subCategoriesOfIndustry };
package/dist/index.d.ts CHANGED
@@ -1474,6 +1474,180 @@ declare const DefaultPaginationOptions: {
1474
1474
  limit: number;
1475
1475
  };
1476
1476
 
1477
+ declare enum UserRole {
1478
+ Admin = "admin",
1479
+ Moderator = "moderator",
1480
+ Manager = "manager",
1481
+ Recruiter = "recruiter",
1482
+ JobSeeker = "job_seeker",
1483
+ Coordinator = "coordinator",
1484
+ System = "system",
1485
+ Normal = "normal"
1486
+ }
1487
+ declare const SupportedUserRoles: UserRole[];
1488
+ declare enum UserStatus {
1489
+ Active = "active",
1490
+ Blocked = "blocked",
1491
+ Pending = "pending",
1492
+ Deleted = "deleted",
1493
+ MarkedForDeletion = "marked_for_deletion"
1494
+ }
1495
+ declare const SupportedUserStatuses: UserStatus[];
1496
+ declare const DefaultUserRoles: UserRole[];
1497
+ declare enum UserProfileVisibility {
1498
+ Public = "public",
1499
+ Private = "private",
1500
+ Hidden = "hidden"
1501
+ }
1502
+ declare const SupportedUserProfileVisibilities: UserProfileVisibility[];
1503
+ declare enum UserDetailType {
1504
+ Overview = "overview",
1505
+ AdditionalInfo = "additionalInfo",
1506
+ General = "general",
1507
+ SocialAccounts = "socialAccounts",
1508
+ WorkExperiences = "workExperiences",
1509
+ Educations = "educations",
1510
+ Skills = "skills",
1511
+ Languages = "languages",
1512
+ Certifications = "certifications",
1513
+ Interests = "interests",
1514
+ Projects = "projects"
1515
+ }
1516
+ declare enum ProficiencyLevel {
1517
+ BasicAwareness = "basic_awareness",
1518
+ Beginner = "beginner",
1519
+ Intermediate = "intermediate",
1520
+ Advanced = "advanced",
1521
+ Expert = "expert"
1522
+ }
1523
+ declare const SupportedProficiencyLevels: ProficiencyLevel[];
1524
+ declare enum JobSearchUrgency {
1525
+ Asap = "asap",
1526
+ WithinThreeMonths = "within_3_months",
1527
+ WithinSixMonths = "within_6_months",
1528
+ PassivelyBrowsing = "passively_browsing"
1529
+ }
1530
+ declare const SupportedJobSearchUrgencies: JobSearchUrgency[];
1531
+ /**
1532
+ * How the user heard about the platform - captured at the end of onboarding
1533
+ * for marketing attribution.
1534
+ */
1535
+ declare enum ReferralSource {
1536
+ Recruiter = "recruiter",
1537
+ LinkedIn = "linkedin",
1538
+ TikTokInstagram = "tiktok_instagram",
1539
+ Google = "google",
1540
+ Reddit = "reddit",
1541
+ ChatGptGemini = "chatgpt_gemini",
1542
+ Friend = "friend",
1543
+ Other = "other"
1544
+ }
1545
+ declare const SupportedReferralSources: ReferralSource[];
1546
+ /**
1547
+ * How often a subscribed user receives job-alert emails. `Off` disables job
1548
+ * alerts specifically while leaving other marketing (newsletters, product
1549
+ * updates) governed by `marketingConsent.subscribed`.
1550
+ */
1551
+ declare enum JobAlertFrequency {
1552
+ Off = "off",
1553
+ Daily = "daily",
1554
+ Weekly = "weekly"
1555
+ }
1556
+ declare const SupportedJobAlertFrequencies: JobAlertFrequency[];
1557
+ /**
1558
+ * Channels of NOTIFICATION email — mail about activity on the user's own
1559
+ * account (a group invite, a job of theirs expiring). Distinct from marketing:
1560
+ * notifications are opt-OUT (default on, see `notificationPrefs`), marketing is
1561
+ * opt-IN (`marketingConsent.subscribed`). Transactional mail (magic-link,
1562
+ * verification) is governed by neither and always sends.
1563
+ *
1564
+ * Deliberately coarse: four channels a user will actually reason about, rather
1565
+ * than one toggle per email template.
1566
+ */
1567
+ declare enum NotificationChannel {
1568
+ /** Group invites, join requests, membership approved/rejected. */
1569
+ GroupActivity = "groupActivity",
1570
+ /** Activity on jobs the user posted, e.g. a listing expiring. */
1571
+ JobActivity = "jobActivity",
1572
+ /** Status changes on jobs the user applied to. */
1573
+ ApplicationUpdates = "applicationUpdates",
1574
+ /** Product announcements and feature news. */
1575
+ ProductUpdates = "productUpdates"
1576
+ }
1577
+ declare const SupportedNotificationChannels: NotificationChannel[];
1578
+ /** ISO-4217 currency codes accepted for the salary preference (extend as needed). */
1579
+ declare const SupportedSalaryCurrencies: readonly ["USD", "EUR", "GBP", "SEK", "INR"];
1580
+ type SupportedSalaryCurrency = (typeof SupportedSalaryCurrencies)[number];
1581
+ /** Bounds enforced server-side on the minimum-salary slider. */
1582
+ declare const MIN_SALARY_LOWER_BOUND = 0;
1583
+ declare const MIN_SALARY_UPPER_BOUND = 1000000;
1584
+ /**
1585
+ * Profile fields whose confirmed write should drain the resume-parser's
1586
+ * suggestion. When the user accepts/edits one of these, the matching
1587
+ * `pendingPrefill.<key>` is unset in the same write so the "Suggestion"
1588
+ * affordance disappears on the next load ("confirmed beats prefill").
1589
+ */
1590
+ declare const PREFILL_MIRRORED_KEYS: readonly ["headline", "aboutMe", "mobile", "location", "experienceLevel", "socialAccounts", "workExperiences", "educations"];
1591
+ type PrefillMirroredKey = (typeof PREFILL_MIRRORED_KEYS)[number];
1592
+ /**
1593
+ * Fields stripped from a public (non-owner) profile read. A public profile must
1594
+ * never expose these regardless of the caller's requested `fields`.
1595
+ */
1596
+ declare const PRIVATE_PROFILE_FIELDS: readonly ["email", "emailVerified", "mobile", "additionalInfo"];
1597
+ type PrivateProfileField = (typeof PRIVATE_PROFILE_FIELDS)[number];
1598
+
1599
+ /**
1600
+ * Lifecycle of a saved search. Lowercase values, like every other enum in this
1601
+ * package: the string is stored in Mongo and compared as a literal across
1602
+ * services, so its casing is data rather than style.
1603
+ */
1604
+ declare enum SavedSearchStatus {
1605
+ /** Matching runs and alerts may be sent. */
1606
+ Active = "active",
1607
+ /**
1608
+ * Kept for the user to see and re-enable, but skipped by the matching sweep.
1609
+ * Distinct from deleting: a user pausing alerts should not lose the query they
1610
+ * spent time building.
1611
+ */
1612
+ Paused = "paused"
1613
+ }
1614
+ declare const SupportedSavedSearchStatuses: SavedSearchStatus[];
1615
+
1616
+ /**
1617
+ * A search a user asked to be kept, and optionally to be alerted about.
1618
+ *
1619
+ * Two jobs in one document, deliberately: the query the user built, and the
1620
+ * cadence at which they want it re-run for them. Splitting them would mean a
1621
+ * user with three saved searches and one alert preference has no way to say
1622
+ * which search the alert is for.
1623
+ *
1624
+ * The stored query mirrors what `GET /jobs/search-v3` accepts — a free-text
1625
+ * `search` plus a `filter` map — so replaying a saved search is running the same
1626
+ * search the user originally ran, not a second, subtly different implementation
1627
+ * that drifts from it.
1628
+ */
1629
+ declare const SavedSearchSchema: yup.ObjectSchema<{
1630
+ shortId: string | undefined;
1631
+ ownerUserId: string | undefined;
1632
+ label: string;
1633
+ search: string | undefined;
1634
+ filter: {};
1635
+ frequency: JobAlertFrequency;
1636
+ status: SavedSearchStatus;
1637
+ lastNotifiedAt: number | undefined;
1638
+ lastMatchedAt: number | undefined;
1639
+ }, yup.AnyObject, {
1640
+ shortId: undefined;
1641
+ ownerUserId: undefined;
1642
+ label: undefined;
1643
+ search: undefined;
1644
+ filter: {};
1645
+ frequency: JobAlertFrequency.Off;
1646
+ status: SavedSearchStatus.Active;
1647
+ lastNotifiedAt: undefined;
1648
+ lastMatchedAt: undefined;
1649
+ }, "">;
1650
+
1477
1651
  declare enum ResourceType {
1478
1652
  Job = "job",
1479
1653
  User = "user",
@@ -1609,107 +1783,6 @@ declare const SocialAccountSchema: yup.ObjectSchema<{
1609
1783
  url: undefined;
1610
1784
  }, "">;
1611
1785
 
1612
- declare enum UserRole {
1613
- Admin = "admin",
1614
- Moderator = "moderator",
1615
- Manager = "manager",
1616
- Recruiter = "recruiter",
1617
- JobSeeker = "job_seeker",
1618
- Coordinator = "coordinator",
1619
- System = "system",
1620
- Normal = "normal"
1621
- }
1622
- declare const SupportedUserRoles: UserRole[];
1623
- declare enum UserStatus {
1624
- Active = "active",
1625
- Blocked = "blocked",
1626
- Pending = "pending",
1627
- Deleted = "deleted",
1628
- MarkedForDeletion = "marked_for_deletion"
1629
- }
1630
- declare const SupportedUserStatuses: UserStatus[];
1631
- declare const DefaultUserRoles: UserRole[];
1632
- declare enum UserProfileVisibility {
1633
- Public = "public",
1634
- Private = "private",
1635
- Hidden = "hidden"
1636
- }
1637
- declare const SupportedUserProfileVisibilities: UserProfileVisibility[];
1638
- declare enum UserDetailType {
1639
- Overview = "overview",
1640
- AdditionalInfo = "additionalInfo",
1641
- General = "general",
1642
- SocialAccounts = "socialAccounts",
1643
- WorkExperiences = "workExperiences",
1644
- Educations = "educations",
1645
- Skills = "skills",
1646
- Languages = "languages",
1647
- Certifications = "certifications",
1648
- Interests = "interests",
1649
- Projects = "projects"
1650
- }
1651
- declare enum ProficiencyLevel {
1652
- BasicAwareness = "basic_awareness",
1653
- Beginner = "beginner",
1654
- Intermediate = "intermediate",
1655
- Advanced = "advanced",
1656
- Expert = "expert"
1657
- }
1658
- declare const SupportedProficiencyLevels: ProficiencyLevel[];
1659
- declare enum JobSearchUrgency {
1660
- Asap = "asap",
1661
- WithinThreeMonths = "within_3_months",
1662
- WithinSixMonths = "within_6_months",
1663
- PassivelyBrowsing = "passively_browsing"
1664
- }
1665
- declare const SupportedJobSearchUrgencies: JobSearchUrgency[];
1666
- /**
1667
- * How the user heard about the platform - captured at the end of onboarding
1668
- * for marketing attribution.
1669
- */
1670
- declare enum ReferralSource {
1671
- Recruiter = "recruiter",
1672
- LinkedIn = "linkedin",
1673
- TikTokInstagram = "tiktok_instagram",
1674
- Google = "google",
1675
- Reddit = "reddit",
1676
- ChatGptGemini = "chatgpt_gemini",
1677
- Friend = "friend",
1678
- Other = "other"
1679
- }
1680
- declare const SupportedReferralSources: ReferralSource[];
1681
- /**
1682
- * How often a subscribed user receives job-alert emails. `Off` disables job
1683
- * alerts specifically while leaving other marketing (newsletters, product
1684
- * updates) governed by `marketingConsent.subscribed`.
1685
- */
1686
- declare enum JobAlertFrequency {
1687
- Off = "off",
1688
- Daily = "daily",
1689
- Weekly = "weekly"
1690
- }
1691
- declare const SupportedJobAlertFrequencies: JobAlertFrequency[];
1692
- /** ISO-4217 currency codes accepted for the salary preference (extend as needed). */
1693
- declare const SupportedSalaryCurrencies: readonly ["USD", "EUR", "GBP", "SEK", "INR"];
1694
- type SupportedSalaryCurrency = (typeof SupportedSalaryCurrencies)[number];
1695
- /** Bounds enforced server-side on the minimum-salary slider. */
1696
- declare const MIN_SALARY_LOWER_BOUND = 0;
1697
- declare const MIN_SALARY_UPPER_BOUND = 1000000;
1698
- /**
1699
- * Profile fields whose confirmed write should drain the resume-parser's
1700
- * suggestion. When the user accepts/edits one of these, the matching
1701
- * `pendingPrefill.<key>` is unset in the same write so the "Suggestion"
1702
- * affordance disappears on the next load ("confirmed beats prefill").
1703
- */
1704
- declare const PREFILL_MIRRORED_KEYS: readonly ["headline", "aboutMe", "mobile", "location", "experienceLevel", "socialAccounts", "workExperiences", "educations"];
1705
- type PrefillMirroredKey = (typeof PREFILL_MIRRORED_KEYS)[number];
1706
- /**
1707
- * Fields stripped from a public (non-owner) profile read. A public profile must
1708
- * never expose these regardless of the caller's requested `fields`.
1709
- */
1710
- declare const PRIVATE_PROFILE_FIELDS: readonly ["email", "emailVerified", "mobile", "additionalInfo"];
1711
- type PrivateProfileField = (typeof PRIVATE_PROFILE_FIELDS)[number];
1712
-
1713
1786
  declare const UserSchema: yup.ObjectSchema<{
1714
1787
  authAccountId: string;
1715
1788
  socialAccounts: {
@@ -1823,6 +1896,12 @@ declare const UserSchema: yup.ObjectSchema<{
1823
1896
  jobAlertFrequency?: JobAlertFrequency | undefined;
1824
1897
  subscribed: boolean;
1825
1898
  };
1899
+ notificationPrefs: {
1900
+ groupActivity: boolean;
1901
+ jobActivity: boolean;
1902
+ applicationUpdates: boolean;
1903
+ productUpdates: boolean;
1904
+ };
1826
1905
  embedding: {
1827
1906
  vector?: number[] | undefined;
1828
1907
  model?: string | undefined;
@@ -2022,6 +2101,12 @@ declare const UserSchema: yup.ObjectSchema<{
2022
2101
  marketingConsent: {
2023
2102
  subscribed: boolean;
2024
2103
  };
2104
+ notificationPrefs: {
2105
+ groupActivity: boolean;
2106
+ jobActivity: boolean;
2107
+ applicationUpdates: boolean;
2108
+ productUpdates: boolean;
2109
+ };
2025
2110
  embedding: {
2026
2111
  vector: undefined;
2027
2112
  model: undefined;
@@ -2910,4 +2995,4 @@ declare const StudentCompletenessSchema: yup.ObjectSchema<{
2910
2995
  };
2911
2996
  }, "">;
2912
2997
 
2913
- export { AnswerChoiceType, ApplicationReceivePreference, CampaignSchema, CampaignStatus, ChoiceQuestionSchema, Common, CompensationType, CompletenessScoreSchema, ContactTypes, CoordinatorPageLinkSchema, DISPLAY_DATE_FORMAT, DISPLAY_DATE_FORMAT_SHORT, DateStringSchema, DbDefaultSchema, DefaultPaginatedResponse, DefaultPaginationOptions, DefaultUserRoles, DurationSchema, EMPTY_STRING, EducationLevel, EducationSchema, EmployeeCount, EmploymentType, ExperienceLevel, FEEDBACK_MESSAGE_MAX, FeedbackSchema, FeedbackStatus, FeedbackType, GeneraDetailFields, GroupManagedBy, GroupMembershipSchema, GroupMembershipStatus, GroupSchema, GroupStatus, GroupTranslationSchema, GroupVisibility, InputQuestionSchema, JOB_TAXONOMY, JobAlertFrequency, JobCategory, JobIndustry, JobSchema, JobSearchUrgency, JobStatus, JobSubCategory, ListFilterSchema, LocationSchema, MIN_SALARY_LOWER_BOUND, MIN_SALARY_UPPER_BOUND, MailingListSchema, PREFILL_MIRRORED_KEYS, PRIVATE_PROFILE_FIELDS, PageSchema, PageStatus, PageType, type PaginatedResponse, PaginationSchema, PostSchema, PostStatus, type PrefillMirroredKey, type PrivateProfileField, ProficiencyLevel, QuestionSchema, QuestionType, ReadAndAcknowledgeQuestionSchema, RecruiterPageLinkSchema, ReferralSource, ReportReason, ReportSchema, ResourceType, SITEMAP_FORMAT, SYSTEM_DATE_FORMAT, SkillSchema, SocialAccount, SocialAccountSchema, StudentCompletenessSchema, StudyType, SupportedAnswerChoiceTypes, SupportedApplicationReceivePreferences, SupportedCampaignStatuses, SupportedCompensationTypes, SupportedContactTypes, SupportedEducationLevels, SupportedEmployeeCounts, SupportedEmploymentTypes, SupportedExperienceLevels, SupportedFeedbackStatuses, SupportedFeedbackTypes, SupportedJobAlertFrequencies, SupportedJobCategories, SupportedJobIndustries, SupportedJobSearchUrgencies, SupportedJobStatuses, SupportedJobSubCategories, SupportedPageStatuses, SupportedPageTypes, SupportedPostStatuses, SupportedProficiencyLevels, SupportedQuestionTypes, SupportedReferralSources, SupportedReportReasons, SupportedResourceTypes, SupportedSalaryCurrencies, type SupportedSalaryCurrency, SupportedSocialAccounts, SupportedStudyTypes, SupportedUserProfileVisibilities, SupportedUserRoles, SupportedUserStatuses, SupportedWorkModes, TAXONOMY_LABELS, type TChoiceQuestionSchema, type TDurationSchema, type TInputQuestionSchema, type TJobSchema, type TPostSchema, type TQuestionSchema, type TReadAndAcknowledgeQuestionSchema, type TUserIdAndCreatedAtSchema, TermsAcceptedSchema, UserAdditionalInfoSchema, UserCertificationSchema, UserCompletenessSchema, UserCoordinatorProfileSchema, UserDetailType, UserGeneralDetailSchema, UserIdAndCreatedAtSchema, UserInterestSchema, UserJobPreferencesSchema, UserLanguageSchema, type UserProfileOverview, UserProfileVisibility, UserProjectSchema, UserRecruiterProfileSchema, UserRole, UserSchema, UserSkillSchema, UserStatus, WorkExperienceSchema, WorkMode, categoryOfIndustry, categoryOfSubCategory, dateString, deriveIndustry, getSchemaByQuestion, industriesOfCategory, industryOfSubCategory, subCategoriesOfIndustry };
2998
+ export { AnswerChoiceType, ApplicationReceivePreference, CampaignSchema, CampaignStatus, ChoiceQuestionSchema, Common, CompensationType, CompletenessScoreSchema, ContactTypes, CoordinatorPageLinkSchema, DISPLAY_DATE_FORMAT, DISPLAY_DATE_FORMAT_SHORT, DateStringSchema, DbDefaultSchema, DefaultPaginatedResponse, DefaultPaginationOptions, DefaultUserRoles, DurationSchema, EMPTY_STRING, EducationLevel, EducationSchema, EmployeeCount, EmploymentType, ExperienceLevel, FEEDBACK_MESSAGE_MAX, FeedbackSchema, FeedbackStatus, FeedbackType, GeneraDetailFields, GroupManagedBy, GroupMembershipSchema, GroupMembershipStatus, GroupSchema, GroupStatus, GroupTranslationSchema, GroupVisibility, InputQuestionSchema, JOB_TAXONOMY, JobAlertFrequency, JobCategory, JobIndustry, JobSchema, JobSearchUrgency, JobStatus, JobSubCategory, ListFilterSchema, LocationSchema, MIN_SALARY_LOWER_BOUND, MIN_SALARY_UPPER_BOUND, MailingListSchema, NotificationChannel, PREFILL_MIRRORED_KEYS, PRIVATE_PROFILE_FIELDS, PageSchema, PageStatus, PageType, type PaginatedResponse, PaginationSchema, PostSchema, PostStatus, type PrefillMirroredKey, type PrivateProfileField, ProficiencyLevel, QuestionSchema, QuestionType, ReadAndAcknowledgeQuestionSchema, RecruiterPageLinkSchema, ReferralSource, ReportReason, ReportSchema, ResourceType, SITEMAP_FORMAT, SYSTEM_DATE_FORMAT, SavedSearchSchema, SavedSearchStatus, SkillSchema, SocialAccount, SocialAccountSchema, StudentCompletenessSchema, StudyType, SupportedAnswerChoiceTypes, SupportedApplicationReceivePreferences, SupportedCampaignStatuses, SupportedCompensationTypes, SupportedContactTypes, SupportedEducationLevels, SupportedEmployeeCounts, SupportedEmploymentTypes, SupportedExperienceLevels, SupportedFeedbackStatuses, SupportedFeedbackTypes, SupportedJobAlertFrequencies, SupportedJobCategories, SupportedJobIndustries, SupportedJobSearchUrgencies, SupportedJobStatuses, SupportedJobSubCategories, SupportedNotificationChannels, SupportedPageStatuses, SupportedPageTypes, SupportedPostStatuses, SupportedProficiencyLevels, SupportedQuestionTypes, SupportedReferralSources, SupportedReportReasons, SupportedResourceTypes, SupportedSalaryCurrencies, type SupportedSalaryCurrency, SupportedSavedSearchStatuses, SupportedSocialAccounts, SupportedStudyTypes, SupportedUserProfileVisibilities, SupportedUserRoles, SupportedUserStatuses, SupportedWorkModes, TAXONOMY_LABELS, type TChoiceQuestionSchema, type TDurationSchema, type TInputQuestionSchema, type TJobSchema, type TPostSchema, type TQuestionSchema, type TReadAndAcknowledgeQuestionSchema, type TUserIdAndCreatedAtSchema, TermsAcceptedSchema, UserAdditionalInfoSchema, UserCertificationSchema, UserCompletenessSchema, UserCoordinatorProfileSchema, UserDetailType, UserGeneralDetailSchema, UserIdAndCreatedAtSchema, UserInterestSchema, UserJobPreferencesSchema, UserLanguageSchema, type UserProfileOverview, UserProfileVisibility, UserProjectSchema, UserRecruiterProfileSchema, UserRole, UserSchema, UserSkillSchema, UserStatus, WorkExperienceSchema, WorkMode, categoryOfIndustry, categoryOfSubCategory, dateString, deriveIndustry, getSchemaByQuestion, industriesOfCategory, industryOfSubCategory, subCategoriesOfIndustry };