lancer-shared 1.2.4 → 1.2.5
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/bundle.cjs.js +609 -642
- package/dist/constants/job-status.d.ts +1 -1
- package/dist/constants/routes.d.ts +1 -1
- package/dist/constants/upwork-accounts.d.ts +1 -2
- package/dist/index.d.ts +0 -1
- package/dist/schemas/account/account-status.d.ts +2 -1
- package/dist/schemas/account/bidder-account.d.ts +5 -0
- package/dist/schemas/account/index.d.ts +3 -3
- package/dist/schemas/account/scraper-account.d.ts +4 -1
- package/dist/schemas/bid/bid-result.d.ts +4 -1
- package/dist/schemas/bid/bid.d.ts +7 -0
- package/dist/schemas/campaign/campaign-analytics.d.ts +5 -0
- package/dist/schemas/campaign/campaign-expenses.d.ts +2 -1
- package/dist/schemas/campaign/campaign-insights.d.ts +4 -0
- package/dist/schemas/campaign/campaign-integrations.d.ts +5 -0
- package/dist/schemas/campaign/campaign.d.ts +15 -0
- package/dist/schemas/campaign/index.d.ts +6 -7
- package/dist/schemas/index.d.ts +1 -3
- package/dist/schemas/job/index.d.ts +889 -10
- package/dist/schemas/job/job-api.d.ts +87 -0
- package/dist/schemas/job/job-filters.d.ts +243 -0
- package/dist/schemas/job/nuxt.d.ts +1667 -0
- package/dist/schemas/lead/index.d.ts +1020 -1283
- package/dist/schemas/lead/lead-status.d.ts +2 -0
- package/dist/schemas/logger/log-event.d.ts +12 -1
- package/dist/schemas/organization/organization.d.ts +22 -118
- package/dist/schemas/scraper/scrape-payload.d.ts +9 -0
- package/dist/schemas/scraper/scrape-result.d.ts +7 -0
- package/dist/schemas/shared.d.ts +6 -0
- package/dist/schemas/time-filter/index.d.ts +1 -0
- package/dist/schemas/transaction/index.d.ts +2 -0
- package/dist/schemas/usage/index.d.ts +25 -20
- package/dist/schemas/user/index.d.ts +10 -0
- package/package.json +1 -1
- package/dist/constants/collections.js +0 -14
- package/dist/constants/common-questions.js +0 -57
- package/dist/constants/index.js +0 -18
- package/dist/constants/job-filter-options.js +0 -265
- package/dist/constants/job-status.js +0 -21
- package/dist/constants/mappings/countryMapping.js +0 -120
- package/dist/constants/mappings/regionMapping.js +0 -240
- package/dist/constants/routes.js +0 -116
- package/dist/constants/upwork-accounts.js +0 -18
- package/dist/index.js +0 -4
- package/dist/schemas/account/account-status.js +0 -8
- package/dist/schemas/account/bidder-account.js +0 -35
- package/dist/schemas/account/index.js +0 -3
- package/dist/schemas/account/scraper-account.js +0 -34
- package/dist/schemas/ai/ai-config.d.ts +0 -36
- package/dist/schemas/ai/ai-config.js +0 -9
- package/dist/schemas/ai/index.d.ts +0 -3
- package/dist/schemas/ai/index.js +0 -3
- package/dist/schemas/ai/proposal.d.ts +0 -82
- package/dist/schemas/ai/proposal.js +0 -13
- package/dist/schemas/ai/suitability.d.ts +0 -37
- package/dist/schemas/ai/suitability.js +0 -14
- package/dist/schemas/bid/bid-result.js +0 -11
- package/dist/schemas/bid/bid.js +0 -35
- package/dist/schemas/bid/index.js +0 -2
- package/dist/schemas/campaign/campaign-ai-metrics.js +0 -6
- package/dist/schemas/campaign/campaign-analytics.js +0 -42
- package/dist/schemas/campaign/campaign-expenses.js +0 -6
- package/dist/schemas/campaign/campaign-insights.js +0 -31
- package/dist/schemas/campaign/campaign-integrations.js +0 -13
- package/dist/schemas/campaign/campaign-job-count.js +0 -3
- package/dist/schemas/campaign/campaign.js +0 -41
- package/dist/schemas/campaign/index.js +0 -7
- package/dist/schemas/chat-message/chat-message.js +0 -10
- package/dist/schemas/chat-message/index.js +0 -1
- package/dist/schemas/config/agency-config.js +0 -7
- package/dist/schemas/config/index.js +0 -1
- package/dist/schemas/event/index.d.ts +0 -58
- package/dist/schemas/index.js +0 -17
- package/dist/schemas/job-filters/index.js +0 -1
- package/dist/schemas/job-filters/job-filters.js +0 -84
- package/dist/schemas/lead/index.js +0 -173
- package/dist/schemas/lead/lead-note.js +0 -27
- package/dist/schemas/lead/lead-status.js +0 -23
- package/dist/schemas/lead/nuxt.js +0 -287
- package/dist/schemas/logger/index.js +0 -1
- package/dist/schemas/logger/log-event.js +0 -117
- package/dist/schemas/organization/index.js +0 -70
- package/dist/schemas/organization/member.js +0 -7
- package/dist/schemas/organization/organization.js +0 -16
- package/dist/schemas/organization/subscription.js +0 -17
- package/dist/schemas/proxy/index.js +0 -3
- package/dist/schemas/proxy/proxy-available-replacements.js +0 -3
- package/dist/schemas/proxy/proxy-country.js +0 -249
- package/dist/schemas/proxy/proxy.js +0 -29
- package/dist/schemas/saved-search/index.js +0 -9
- package/dist/schemas/scraper/index.js +0 -2
- package/dist/schemas/scraper/scrape-payload.js +0 -21
- package/dist/schemas/scraper/scrape-result.js +0 -23
- package/dist/schemas/shared.js +0 -19
- package/dist/schemas/time-filter/index.js +0 -6
- package/dist/schemas/transaction/index.js +0 -17
- package/dist/schemas/usage/index.js +0 -18
- package/dist/schemas/user/index.js +0 -52
- package/dist/types/account/account-status.js +0 -1
- package/dist/types/account/bidder-account.js +0 -1
- package/dist/types/account/index.js +0 -3
- package/dist/types/account/scraper-account.js +0 -1
- package/dist/types/ai/ai-config.d.ts +0 -6
- package/dist/types/ai/ai-config.js +0 -1
- package/dist/types/ai/index.d.ts +0 -3
- package/dist/types/ai/index.js +0 -3
- package/dist/types/ai/proposal.d.ts +0 -10
- package/dist/types/ai/proposal.js +0 -1
- package/dist/types/ai/suitability.d.ts +0 -6
- package/dist/types/ai/suitability.js +0 -1
- package/dist/types/bid/bid-result.js +0 -1
- package/dist/types/bid/bid.js +0 -1
- package/dist/types/bid/index.js +0 -2
- package/dist/types/campaign/campaign-analytics.js +0 -1
- package/dist/types/campaign/campaign-expenses.js +0 -1
- package/dist/types/campaign/campaign-insights.js +0 -1
- package/dist/types/campaign/campaign-integrations.js +0 -1
- package/dist/types/campaign/campaign-job-count.js +0 -1
- package/dist/types/campaign/campaign.js +0 -1
- package/dist/types/campaign/index.js +0 -6
- package/dist/types/chat-message/chat-message.js +0 -1
- package/dist/types/chat-message/index.js +0 -1
- package/dist/types/config/agency-config.js +0 -1
- package/dist/types/config/index.js +0 -1
- package/dist/types/index.js +0 -15
- package/dist/types/job/index.js +0 -3
- package/dist/types/job/job-note.js +0 -1
- package/dist/types/job/job-status.js +0 -9
- package/dist/types/job/nuxt.js +0 -1
- package/dist/types/job-filters/index.js +0 -1
- package/dist/types/job-filters/job-filters.js +0 -1
- package/dist/types/logger/index.js +0 -1
- package/dist/types/logger/log-event.js +0 -1
- package/dist/types/saved-search/index.js +0 -1
- package/dist/types/scraper/index.js +0 -2
- package/dist/types/scraper/scrape-payload.js +0 -1
- package/dist/types/scraper/scrape-result.js +0 -1
- package/dist/types/shared.js +0 -1
- package/dist/types/time-filter/index.js +0 -1
- package/dist/types/transaction/index.js +0 -1
- package/dist/types/usage/index.js +0 -1
- package/dist/types/user/index.js +0 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/try-catch.js +0 -10
package/dist/bundle.cjs.js
CHANGED
|
@@ -4402,11 +4402,11 @@ var z = /*#__PURE__*/Object.freeze({
|
|
|
4402
4402
|
});
|
|
4403
4403
|
|
|
4404
4404
|
const accountStatusSchema = z.enum([
|
|
4405
|
-
|
|
4406
|
-
|
|
4407
|
-
|
|
4408
|
-
|
|
4409
|
-
|
|
4405
|
+
"verification_required",
|
|
4406
|
+
"shadow_banned",
|
|
4407
|
+
"healthy",
|
|
4408
|
+
"banned",
|
|
4409
|
+
"suspended",
|
|
4410
4410
|
]);
|
|
4411
4411
|
|
|
4412
4412
|
const bidderAccountProvider = z.enum([
|
|
@@ -4443,433 +4443,6 @@ const updateBidderAccountSchema = bidderAccountSchema
|
|
|
4443
4443
|
})
|
|
4444
4444
|
.partial();
|
|
4445
4445
|
|
|
4446
|
-
const JOB_FILTER_OPTIONS = {
|
|
4447
|
-
REGIONS: ["Worldwide", "UKOnly", "USOnly"],
|
|
4448
|
-
PROJECT_DURATION: [
|
|
4449
|
-
"Less than 1 month",
|
|
4450
|
-
"1 to 3 months",
|
|
4451
|
-
"3 to 6 months",
|
|
4452
|
-
"More than 6 months",
|
|
4453
|
-
"Unspecified",
|
|
4454
|
-
],
|
|
4455
|
-
ENGAGEMENT_TYPE: [
|
|
4456
|
-
"Less than 30 hrs/week",
|
|
4457
|
-
"More than 30 hrs/week",
|
|
4458
|
-
"Unspecified",
|
|
4459
|
-
],
|
|
4460
|
-
VENDOR_TYPE: ["Independent", "Agency", "Unspecified"],
|
|
4461
|
-
PAYMENT_TYPE: ["Fixed-price", "Hourly", "Unspecified"],
|
|
4462
|
-
TALENT_TYPE: ["Agency", "Independent", "Unspecified"],
|
|
4463
|
-
ENGLISH_LEVELS: [
|
|
4464
|
-
"Fluent",
|
|
4465
|
-
"Conversational",
|
|
4466
|
-
"Native or Bilingual",
|
|
4467
|
-
"Unspecified",
|
|
4468
|
-
],
|
|
4469
|
-
EXPERIENCE_LEVELS: ["Entry level", "Intermediate", "Expert"],
|
|
4470
|
-
REQUIRED_EARNINGS: [100, 1000, 10000],
|
|
4471
|
-
REQUIRED_JSS: [">80%", ">90%", "100%", "RT"],
|
|
4472
|
-
HIERARCHICAL_CATEGORIES: [
|
|
4473
|
-
{
|
|
4474
|
-
label: "Accounting & Consulting",
|
|
4475
|
-
value: "accounting-consulting",
|
|
4476
|
-
children: [
|
|
4477
|
-
"Accounting & Bookkeeping",
|
|
4478
|
-
"Financial Planning",
|
|
4479
|
-
"Management Consulting & Analysis",
|
|
4480
|
-
"Other - Accounting & Consulting",
|
|
4481
|
-
"Personal & Professional Coaching",
|
|
4482
|
-
"Recruiting & Human Resources",
|
|
4483
|
-
],
|
|
4484
|
-
},
|
|
4485
|
-
{
|
|
4486
|
-
label: "Admin Support",
|
|
4487
|
-
value: "admin-support",
|
|
4488
|
-
children: [
|
|
4489
|
-
"Data Entry & Transcription Services",
|
|
4490
|
-
"Market Research & Product Reviews",
|
|
4491
|
-
"Project Management",
|
|
4492
|
-
"Virtual Assistance",
|
|
4493
|
-
],
|
|
4494
|
-
},
|
|
4495
|
-
{
|
|
4496
|
-
label: "Customer Service",
|
|
4497
|
-
value: "customer-service",
|
|
4498
|
-
children: [
|
|
4499
|
-
"Community Management & Tagging",
|
|
4500
|
-
"Customer Service & Tech Support",
|
|
4501
|
-
],
|
|
4502
|
-
},
|
|
4503
|
-
{
|
|
4504
|
-
label: "Data Science & Analytics",
|
|
4505
|
-
value: "data-science-analytics",
|
|
4506
|
-
children: [
|
|
4507
|
-
"AI & Machine Learning",
|
|
4508
|
-
"Data Analysis & Testing",
|
|
4509
|
-
"Data Extraction/ETL",
|
|
4510
|
-
"Data Mining & Management",
|
|
4511
|
-
],
|
|
4512
|
-
},
|
|
4513
|
-
{
|
|
4514
|
-
label: "Design & Creative",
|
|
4515
|
-
value: "design-creative",
|
|
4516
|
-
children: [
|
|
4517
|
-
"Art & Illustration",
|
|
4518
|
-
"Audio & Music Production",
|
|
4519
|
-
"Branding & Logo Design",
|
|
4520
|
-
"Graphic, Editorial & Presentation Design",
|
|
4521
|
-
"NFT, AR/VR & Game Art",
|
|
4522
|
-
"Performing Arts",
|
|
4523
|
-
"Photography",
|
|
4524
|
-
"Product Design",
|
|
4525
|
-
"Video & Animation",
|
|
4526
|
-
],
|
|
4527
|
-
},
|
|
4528
|
-
{
|
|
4529
|
-
label: "Engineering & Architecture",
|
|
4530
|
-
value: "engineering-architecture",
|
|
4531
|
-
children: [
|
|
4532
|
-
"3D Modeling & CAD",
|
|
4533
|
-
"Building & Landscape Architecture",
|
|
4534
|
-
"Chemical Engineering",
|
|
4535
|
-
"Civil & Structural Engineering",
|
|
4536
|
-
"Contract Manufacturing",
|
|
4537
|
-
"Electrical & Electronic Engineering",
|
|
4538
|
-
"Energy & Mechanical Engineering",
|
|
4539
|
-
],
|
|
4540
|
-
},
|
|
4541
|
-
{
|
|
4542
|
-
label: "IT & Networking",
|
|
4543
|
-
value: "it-networking",
|
|
4544
|
-
children: [
|
|
4545
|
-
"Database Management & Administration",
|
|
4546
|
-
"DevOps & Solution Architecture",
|
|
4547
|
-
"ERP/CRM Software",
|
|
4548
|
-
"Information Security & Compliance",
|
|
4549
|
-
"Network & System Administration",
|
|
4550
|
-
],
|
|
4551
|
-
},
|
|
4552
|
-
{
|
|
4553
|
-
label: "Legal",
|
|
4554
|
-
value: "legal",
|
|
4555
|
-
children: [
|
|
4556
|
-
"Corporate & Contract Law",
|
|
4557
|
-
"Finance & Tax Law",
|
|
4558
|
-
"International & Immigration Law",
|
|
4559
|
-
"Public Law",
|
|
4560
|
-
],
|
|
4561
|
-
},
|
|
4562
|
-
{
|
|
4563
|
-
label: "Sales & Marketing",
|
|
4564
|
-
value: "sales-marketing",
|
|
4565
|
-
children: [
|
|
4566
|
-
"Digital Marketing",
|
|
4567
|
-
"Lead Generation & Telemarketing",
|
|
4568
|
-
"Marketing, PR & Brand Strategy",
|
|
4569
|
-
],
|
|
4570
|
-
},
|
|
4571
|
-
{
|
|
4572
|
-
label: "Translation",
|
|
4573
|
-
value: "translation",
|
|
4574
|
-
children: [
|
|
4575
|
-
"Language Tutoring & Interpretation",
|
|
4576
|
-
"Translation & Localization Services",
|
|
4577
|
-
],
|
|
4578
|
-
},
|
|
4579
|
-
{
|
|
4580
|
-
label: "Software Development",
|
|
4581
|
-
value: "software-development",
|
|
4582
|
-
children: [
|
|
4583
|
-
"AI Apps & Integration",
|
|
4584
|
-
"Blockchain, NFT & Cryptocurrency",
|
|
4585
|
-
"Desktop Application Development",
|
|
4586
|
-
"Ecommerce Development",
|
|
4587
|
-
"Game Design & Development",
|
|
4588
|
-
"Mobile Development",
|
|
4589
|
-
"Other - Software Development",
|
|
4590
|
-
"Product Management & Scrum",
|
|
4591
|
-
"QA Testing",
|
|
4592
|
-
"Scripts & Utilities",
|
|
4593
|
-
"Web & Mobile Design",
|
|
4594
|
-
"Web Development",
|
|
4595
|
-
],
|
|
4596
|
-
},
|
|
4597
|
-
{
|
|
4598
|
-
label: "Writing",
|
|
4599
|
-
value: "writing",
|
|
4600
|
-
children: [
|
|
4601
|
-
"Content Writing",
|
|
4602
|
-
"Editing & Proofreading Services",
|
|
4603
|
-
"Professional & Business Writing",
|
|
4604
|
-
"Sales & Marketing Copywriting",
|
|
4605
|
-
],
|
|
4606
|
-
},
|
|
4607
|
-
],
|
|
4608
|
-
CATEGORIES: [
|
|
4609
|
-
"Personal & Professional Coaching",
|
|
4610
|
-
"Accounting & Bookkeeping",
|
|
4611
|
-
"Financial Planning",
|
|
4612
|
-
"Recruiting & Human Resources",
|
|
4613
|
-
"Management Consulting & Analysis",
|
|
4614
|
-
"Other - Accounting & Consulting",
|
|
4615
|
-
"Data Entry & Transcription Services",
|
|
4616
|
-
"Virtual Assistance",
|
|
4617
|
-
"Project Management",
|
|
4618
|
-
"Market Research & Product Reviews",
|
|
4619
|
-
"Community Management & Tagging",
|
|
4620
|
-
"Customer Service & Tech Support",
|
|
4621
|
-
"Data Analysis & Testing",
|
|
4622
|
-
"Data Extraction/ETL",
|
|
4623
|
-
"Data Mining & Management",
|
|
4624
|
-
"AI & Machine Learning",
|
|
4625
|
-
"Art & Illustration",
|
|
4626
|
-
"Audio & Music Production",
|
|
4627
|
-
"Branding & Logo Design",
|
|
4628
|
-
"NFT, AR/VR & Game Art",
|
|
4629
|
-
"Graphic, Editorial & Presentation Design",
|
|
4630
|
-
"Performing Arts",
|
|
4631
|
-
"Photography",
|
|
4632
|
-
"Product Design",
|
|
4633
|
-
"Video & Animation",
|
|
4634
|
-
"Building & Landscape Architecture",
|
|
4635
|
-
"Chemical Engineering",
|
|
4636
|
-
"Civil & Structural Engineering",
|
|
4637
|
-
"Contract Manufacturing",
|
|
4638
|
-
"Electrical & Electronic Engineering",
|
|
4639
|
-
"Energy & Mechanical Engineering",
|
|
4640
|
-
"3D Modeling & CAD",
|
|
4641
|
-
"Database Management & Administration",
|
|
4642
|
-
"ERP/CRM Software",
|
|
4643
|
-
"Information Security & Compliance",
|
|
4644
|
-
"Network & System Administration",
|
|
4645
|
-
"DevOps & Solution Architecture",
|
|
4646
|
-
"Corporate & Contract Law",
|
|
4647
|
-
"International & Immigration Law",
|
|
4648
|
-
"Finance & Tax Law",
|
|
4649
|
-
"Public Law",
|
|
4650
|
-
"Digital Marketing",
|
|
4651
|
-
"Lead Generation & Telemarketing",
|
|
4652
|
-
"Marketing, PR & Brand Strategy",
|
|
4653
|
-
"Language Tutoring & Interpretation",
|
|
4654
|
-
"Translation & Localization Services",
|
|
4655
|
-
"Blockchain, NFT & Cryptocurrency",
|
|
4656
|
-
"AI Apps & Integration",
|
|
4657
|
-
"Desktop Application Development",
|
|
4658
|
-
"Ecommerce Development",
|
|
4659
|
-
"Game Design & Development",
|
|
4660
|
-
"Mobile Development",
|
|
4661
|
-
"Other - Software Development",
|
|
4662
|
-
"Product Management & Scrum",
|
|
4663
|
-
"QA Testing",
|
|
4664
|
-
"Scripts & Utilities",
|
|
4665
|
-
"Web & Mobile Design",
|
|
4666
|
-
"Web Development",
|
|
4667
|
-
"Sales & Marketing Copywriting",
|
|
4668
|
-
"Content Writing",
|
|
4669
|
-
"Editing & Proofreading Services",
|
|
4670
|
-
"Professional & Business Writing",
|
|
4671
|
-
],
|
|
4672
|
-
CLIENT_INDUSTRY: [
|
|
4673
|
-
"Aerospace",
|
|
4674
|
-
"Agriculture & Forestry",
|
|
4675
|
-
"Art & Design",
|
|
4676
|
-
"Automotive",
|
|
4677
|
-
"Aviation",
|
|
4678
|
-
"Education",
|
|
4679
|
-
"Energy & Utilities",
|
|
4680
|
-
"Engineering & Architecture",
|
|
4681
|
-
"Fashion & Beauty",
|
|
4682
|
-
"Finance & Accounting",
|
|
4683
|
-
"Food & Beverage",
|
|
4684
|
-
"Government & Public Sector",
|
|
4685
|
-
"Health & Fitness",
|
|
4686
|
-
"HR & Business Services",
|
|
4687
|
-
"Legal",
|
|
4688
|
-
"Manufacturing & Construction",
|
|
4689
|
-
"Media & Entertainment",
|
|
4690
|
-
"Military & Defense",
|
|
4691
|
-
"Mining",
|
|
4692
|
-
"Real Estate",
|
|
4693
|
-
"Retail & Consumer Goods",
|
|
4694
|
-
"Sales & Marketing",
|
|
4695
|
-
"Science & Medicine",
|
|
4696
|
-
"Sports & Recreation",
|
|
4697
|
-
"Supply Chain & Logistics",
|
|
4698
|
-
"Tech & IT",
|
|
4699
|
-
"Transportation & Warehousing",
|
|
4700
|
-
"Travel & Hospitality",
|
|
4701
|
-
],
|
|
4702
|
-
CLIENT_SIZE: [
|
|
4703
|
-
"Individual client",
|
|
4704
|
-
"Small company (2-9 people)",
|
|
4705
|
-
"Mid-sized company (10-99 people)",
|
|
4706
|
-
"Large company (100-1,000 people)",
|
|
4707
|
-
"Large company (1,000+ people)",
|
|
4708
|
-
"Unspecified",
|
|
4709
|
-
],
|
|
4710
|
-
};
|
|
4711
|
-
|
|
4712
|
-
// Enum definitions for fixed options
|
|
4713
|
-
const projectDurationEnum = z.enum(JOB_FILTER_OPTIONS.PROJECT_DURATION);
|
|
4714
|
-
const engagementTypeEnum = z.enum(JOB_FILTER_OPTIONS.ENGAGEMENT_TYPE);
|
|
4715
|
-
const vendorTypeEnum = z.enum(JOB_FILTER_OPTIONS.VENDOR_TYPE);
|
|
4716
|
-
const paymentTypeEnum = z.enum(JOB_FILTER_OPTIONS.PAYMENT_TYPE);
|
|
4717
|
-
const categoryEnum = z.enum(JOB_FILTER_OPTIONS.CATEGORIES);
|
|
4718
|
-
const clientIndustryEnum = z.enum(JOB_FILTER_OPTIONS.CLIENT_INDUSTRY);
|
|
4719
|
-
const clientSizeEnum = z.enum(JOB_FILTER_OPTIONS.CLIENT_SIZE);
|
|
4720
|
-
const talentTypeEnum = z.enum(JOB_FILTER_OPTIONS.TALENT_TYPE);
|
|
4721
|
-
const englishLevelEnum = z.enum(JOB_FILTER_OPTIONS.ENGLISH_LEVELS);
|
|
4722
|
-
const experienceLevelEnum = z.enum(JOB_FILTER_OPTIONS.EXPERIENCE_LEVELS);
|
|
4723
|
-
const regionEnum = z.enum(["all", "Worldwide", "UKOnly", "USOnly"]);
|
|
4724
|
-
const requiredEarningsEnum = z.union([
|
|
4725
|
-
z.literal(100),
|
|
4726
|
-
z.literal(1000),
|
|
4727
|
-
z.literal(10000),
|
|
4728
|
-
]);
|
|
4729
|
-
const requiredJSSEnum = z.enum(JOB_FILTER_OPTIONS.REQUIRED_JSS);
|
|
4730
|
-
// Main job filters schema
|
|
4731
|
-
const jobFiltersSchema = z.object({
|
|
4732
|
-
keywords: z
|
|
4733
|
-
.object({
|
|
4734
|
-
includes: z.string().nullable(),
|
|
4735
|
-
excludes: z.string().nullable(),
|
|
4736
|
-
})
|
|
4737
|
-
.nullable(),
|
|
4738
|
-
isFeatured: z.enum(["all", "true", "false"]).nullable(),
|
|
4739
|
-
regions: z.array(regionEnum).nullable(),
|
|
4740
|
-
categories: z
|
|
4741
|
-
.object({
|
|
4742
|
-
includes: z.array(categoryEnum).nullable(),
|
|
4743
|
-
excludes: z.array(categoryEnum).nullable(),
|
|
4744
|
-
})
|
|
4745
|
-
.nullable(),
|
|
4746
|
-
payment: z
|
|
4747
|
-
.object({
|
|
4748
|
-
paymentType: z.array(paymentTypeEnum).nullable(),
|
|
4749
|
-
minFixedPrice: z.number().nullable(),
|
|
4750
|
-
maxFixedPrice: z.number().nullable(),
|
|
4751
|
-
minHourlyRate: z.number().nullable(),
|
|
4752
|
-
maxHourlyRate: z.number().nullable(),
|
|
4753
|
-
})
|
|
4754
|
-
.nullable(),
|
|
4755
|
-
projectDuration: z.array(projectDurationEnum).nullable(),
|
|
4756
|
-
experienceLevel: z.array(experienceLevelEnum).nullable(),
|
|
4757
|
-
questions: z
|
|
4758
|
-
.object({
|
|
4759
|
-
hasQuestions: z.enum(["all", "yes", "no"]).default("all"),
|
|
4760
|
-
})
|
|
4761
|
-
.nullable(),
|
|
4762
|
-
engagementType: z.array(engagementTypeEnum).nullable(),
|
|
4763
|
-
clientInfo: z
|
|
4764
|
-
.object({
|
|
4765
|
-
isPaymentVerified: z.enum(["all", "true", "false"]).default("all"),
|
|
4766
|
-
isPhoneVerified: z.enum(["all", "true", "false"]).default("all"),
|
|
4767
|
-
enterpriseClient: z.enum(["all", "true", "false"]).default("all"),
|
|
4768
|
-
clientLocationIncludes: z.array(z.string()).nullable(),
|
|
4769
|
-
clientLocationExcludes: z.array(z.string()).nullable(),
|
|
4770
|
-
minReviewScore: z.number().min(0).max(5).nullable(),
|
|
4771
|
-
minTotalSpent: z.number().nullable(),
|
|
4772
|
-
minHireRate: z.number().min(0).max(100).nullable(),
|
|
4773
|
-
clientIndustry: z.array(clientIndustryEnum).nullable(),
|
|
4774
|
-
companySize: z.array(clientSizeEnum).nullable(),
|
|
4775
|
-
minJobsPosted: z.number().nullable(),
|
|
4776
|
-
minAvgHourlyRate: z.number().nullable(),
|
|
4777
|
-
minNumReviews: z.number().nullable(),
|
|
4778
|
-
memberSinceFrom: z.string().date().nullable(),
|
|
4779
|
-
memberSinceTo: z.string().date().nullable(),
|
|
4780
|
-
})
|
|
4781
|
-
.nullable(),
|
|
4782
|
-
vendorQualifications: z
|
|
4783
|
-
.object({
|
|
4784
|
-
locationIncludes: z.array(z.string()).nullable(),
|
|
4785
|
-
locationExcludes: z.array(z.string()).nullable(),
|
|
4786
|
-
talentTypes: z.array(talentTypeEnum).nullable(),
|
|
4787
|
-
englishLevels: z.array(englishLevelEnum).nullable(),
|
|
4788
|
-
includeRisingTalent: z.string().nullable(),
|
|
4789
|
-
requiredEarnings: requiredEarningsEnum.nullable(),
|
|
4790
|
-
requiredJSS: z.array(requiredJSSEnum).nullable(),
|
|
4791
|
-
})
|
|
4792
|
-
.nullable(),
|
|
4793
|
-
});
|
|
4794
|
-
|
|
4795
|
-
const scraperAccountSchema = z.object({
|
|
4796
|
-
id: z.string(),
|
|
4797
|
-
email: z.string().email(),
|
|
4798
|
-
password: z.string(),
|
|
4799
|
-
cookies: z.record(z.string(), z.string()),
|
|
4800
|
-
proxy_credentials: z.string(),
|
|
4801
|
-
region: regionEnum,
|
|
4802
|
-
isActive: z.boolean(),
|
|
4803
|
-
lastUsed: z.number(),
|
|
4804
|
-
status: accountStatusSchema,
|
|
4805
|
-
verified: z.boolean(),
|
|
4806
|
-
errors: z.array(z.object({
|
|
4807
|
-
errorMessage: z.string(),
|
|
4808
|
-
timestamp: z.number(),
|
|
4809
|
-
screenshotUrl: z.string(),
|
|
4810
|
-
htmlUrl: z.string(),
|
|
4811
|
-
})),
|
|
4812
|
-
});
|
|
4813
|
-
const createScraperAccountSchema = scraperAccountSchema.pick({
|
|
4814
|
-
email: true,
|
|
4815
|
-
password: true,
|
|
4816
|
-
proxy_credentials: true,
|
|
4817
|
-
region: true,
|
|
4818
|
-
verified: true,
|
|
4819
|
-
isActive: true,
|
|
4820
|
-
});
|
|
4821
|
-
const updateScraperAccountSchema = scraperAccountSchema
|
|
4822
|
-
.omit({
|
|
4823
|
-
id: true,
|
|
4824
|
-
})
|
|
4825
|
-
.partial();
|
|
4826
|
-
|
|
4827
|
-
const bidPayloadProposalDataSchema = z.object({
|
|
4828
|
-
coverLetter: z.string(),
|
|
4829
|
-
questionAnswerPairs: z
|
|
4830
|
-
.array(z.object({
|
|
4831
|
-
question: z.string(),
|
|
4832
|
-
answer: z.string(),
|
|
4833
|
-
}))
|
|
4834
|
-
.nullable(),
|
|
4835
|
-
boostingEnabled: z.boolean(),
|
|
4836
|
-
minimumBoost: z.number().nullable(),
|
|
4837
|
-
maximumBoost: z.number().nullable(),
|
|
4838
|
-
});
|
|
4839
|
-
const freelancerBidProposalDataSchema = bidPayloadProposalDataSchema;
|
|
4840
|
-
const agencyBidProposalDataSchema = bidPayloadProposalDataSchema.extend({
|
|
4841
|
-
agencyName: z.string(),
|
|
4842
|
-
contractorName: z.string(),
|
|
4843
|
-
specializedProfile: z.string().nullable(),
|
|
4844
|
-
});
|
|
4845
|
-
const bidPayloadSchema = z.object({
|
|
4846
|
-
jobUrl: z.string(),
|
|
4847
|
-
username: z.string(),
|
|
4848
|
-
password: z.string(),
|
|
4849
|
-
});
|
|
4850
|
-
const agencyBidPayloadSchema = bidPayloadSchema.extend({
|
|
4851
|
-
proposalData: agencyBidProposalDataSchema,
|
|
4852
|
-
});
|
|
4853
|
-
const freelancerBidPayloadSchema = bidPayloadSchema.extend({
|
|
4854
|
-
proposalData: freelancerBidProposalDataSchema,
|
|
4855
|
-
});
|
|
4856
|
-
const bidDtoSchema = z.object({
|
|
4857
|
-
organizationId: z.string(),
|
|
4858
|
-
campaignId: z.string(),
|
|
4859
|
-
leadId: z.string(),
|
|
4860
|
-
});
|
|
4861
|
-
|
|
4862
|
-
const bidSuccessSchema = z.object({
|
|
4863
|
-
status: z.literal('success'),
|
|
4864
|
-
biddingAmount: z.number(),
|
|
4865
|
-
boosted: z.boolean(),
|
|
4866
|
-
boostingAmount: z.number(),
|
|
4867
|
-
});
|
|
4868
|
-
const bidFailedSchema = z.object({
|
|
4869
|
-
status: z.literal('failed'),
|
|
4870
|
-
errorMessage: z.string(),
|
|
4871
|
-
});
|
|
4872
|
-
|
|
4873
4446
|
const booleanSchema = z
|
|
4874
4447
|
.union([z.boolean(), z.literal("true"), z.literal("false")])
|
|
4875
4448
|
.transform((value) => value === true || value === "true");
|
|
@@ -4889,56 +4462,6 @@ const regionSchema = z.union([
|
|
|
4889
4462
|
z.literal("Worldwide"),
|
|
4890
4463
|
]);
|
|
4891
4464
|
|
|
4892
|
-
const leadNoteSchema = z.object({
|
|
4893
|
-
id: z.string(),
|
|
4894
|
-
jobId: z.string(),
|
|
4895
|
-
content: z.string(),
|
|
4896
|
-
order: z.number(),
|
|
4897
|
-
bgColor: z.string(),
|
|
4898
|
-
createdAt: z.number(),
|
|
4899
|
-
updatedAt: z.number(),
|
|
4900
|
-
});
|
|
4901
|
-
const createLeadNoteSchema = leadNoteSchema.pick({
|
|
4902
|
-
id: true,
|
|
4903
|
-
content: true,
|
|
4904
|
-
order: true,
|
|
4905
|
-
bgColor: true,
|
|
4906
|
-
});
|
|
4907
|
-
const updateLeadNoteSchema = leadNoteSchema
|
|
4908
|
-
.pick({
|
|
4909
|
-
id: true,
|
|
4910
|
-
content: true,
|
|
4911
|
-
order: true,
|
|
4912
|
-
bgColor: true,
|
|
4913
|
-
})
|
|
4914
|
-
.partial({ content: true, order: true, bgColor: true });
|
|
4915
|
-
const updateLeadNotesOrderSchema = z.object({
|
|
4916
|
-
order: z.array(z.object({ id: z.string(), order: z.number() })),
|
|
4917
|
-
});
|
|
4918
|
-
|
|
4919
|
-
const agentStatusSchema = z.enum([
|
|
4920
|
-
"suitabilityPending",
|
|
4921
|
-
"suitabilityProcessing",
|
|
4922
|
-
"suitabilityComplete",
|
|
4923
|
-
"suitabilityFailed",
|
|
4924
|
-
"proposalProcessing",
|
|
4925
|
-
"proposalComplete",
|
|
4926
|
-
"proposalFailed",
|
|
4927
|
-
"biddingProcessing",
|
|
4928
|
-
"biddingComplete",
|
|
4929
|
-
"biddingFailed",
|
|
4930
|
-
"jobArchived",
|
|
4931
|
-
]);
|
|
4932
|
-
const leadStatusSchema = z.enum([
|
|
4933
|
-
"leads",
|
|
4934
|
-
"contacted",
|
|
4935
|
-
"viewed",
|
|
4936
|
-
"replied",
|
|
4937
|
-
"negotiations",
|
|
4938
|
-
"won",
|
|
4939
|
-
"lost",
|
|
4940
|
-
]);
|
|
4941
|
-
|
|
4942
4465
|
const segmentationDataSchema = objectType({
|
|
4943
4466
|
customValue: stringType().nullable(),
|
|
4944
4467
|
label: stringType(),
|
|
@@ -5176,54 +4699,416 @@ const authSchema = objectType({
|
|
|
5176
4699
|
isInfographicTooltipAvailable: booleanType(),
|
|
5177
4700
|
}),
|
|
5178
4701
|
});
|
|
5179
|
-
const applicationContextSchema = objectType({
|
|
5180
|
-
freelancerAllowed: booleanType(),
|
|
5181
|
-
clientAllowed: booleanType(),
|
|
5182
|
-
userIntentEvaluation: objectType({
|
|
5183
|
-
isDeclined: booleanType(),
|
|
5184
|
-
reason: stringType().nullable(),
|
|
5185
|
-
}),
|
|
5186
|
-
canApplyOnBehalfOfAgencyFreelancers: booleanType(),
|
|
5187
|
-
canSubmitMoreProposals: booleanType(),
|
|
5188
|
-
submittedProposals: anyType().nullable(),
|
|
4702
|
+
const applicationContextSchema = objectType({
|
|
4703
|
+
freelancerAllowed: booleanType(),
|
|
4704
|
+
clientAllowed: booleanType(),
|
|
4705
|
+
userIntentEvaluation: objectType({
|
|
4706
|
+
isDeclined: booleanType(),
|
|
4707
|
+
reason: stringType().nullable(),
|
|
4708
|
+
}),
|
|
4709
|
+
canApplyOnBehalfOfAgencyFreelancers: booleanType(),
|
|
4710
|
+
canSubmitMoreProposals: booleanType(),
|
|
4711
|
+
submittedProposals: anyType().nullable(),
|
|
4712
|
+
});
|
|
4713
|
+
const nuxtStateJobSchema = objectType({
|
|
4714
|
+
cache: booleanType(),
|
|
4715
|
+
job: jobSchema,
|
|
4716
|
+
buyer: buyerSchema,
|
|
4717
|
+
currentUserInfo: currentUserInfoSchema,
|
|
4718
|
+
isVisitor: booleanType(),
|
|
4719
|
+
openJobs: arrayType(anyType()),
|
|
4720
|
+
workHistory: workHistorySchema,
|
|
4721
|
+
similarJobs: arrayType(anyType()),
|
|
4722
|
+
sands: sandsSchema,
|
|
4723
|
+
auth: authSchema,
|
|
4724
|
+
applicants: objectType({
|
|
4725
|
+
applicantsBidsStats: anyType().nullable(),
|
|
4726
|
+
}),
|
|
4727
|
+
connects: connectsSchema.nullish(),
|
|
4728
|
+
enterpriseJobAdditionalInfo: recordType(anyType()),
|
|
4729
|
+
applicationContext: applicationContextSchema,
|
|
4730
|
+
profileMatchServiceUid: stringType(),
|
|
4731
|
+
seo: objectType({
|
|
4732
|
+
title: stringType(),
|
|
4733
|
+
description: stringType(),
|
|
4734
|
+
url: stringType(),
|
|
4735
|
+
}),
|
|
4736
|
+
teamUid: anyType().nullable(),
|
|
4737
|
+
proposalPermissions: objectType({
|
|
4738
|
+
freelancerAllowed: booleanType(),
|
|
4739
|
+
clientAllowed: booleanType(),
|
|
4740
|
+
}),
|
|
4741
|
+
jobSlug: anyType().nullable(),
|
|
4742
|
+
prefillWith: anyType().nullable(),
|
|
4743
|
+
isGroupOpportunity: booleanType(),
|
|
4744
|
+
workLocation: anyType().nullable(),
|
|
4745
|
+
isPhoneVerified: booleanType(),
|
|
4746
|
+
errorResponse: anyType().nullable(),
|
|
4747
|
+
isApplyBlocked: booleanType(),
|
|
4748
|
+
hasAiInterview: booleanType(),
|
|
4749
|
+
talentFeePromotion: booleanType().nullish(),
|
|
4750
|
+
});
|
|
4751
|
+
|
|
4752
|
+
const JOB_FILTER_OPTIONS = {
|
|
4753
|
+
REGIONS: ["Worldwide", "UKOnly", "USOnly"],
|
|
4754
|
+
PROJECT_DURATION: [
|
|
4755
|
+
"Less than 1 month",
|
|
4756
|
+
"1 to 3 months",
|
|
4757
|
+
"3 to 6 months",
|
|
4758
|
+
"More than 6 months",
|
|
4759
|
+
"Unspecified",
|
|
4760
|
+
],
|
|
4761
|
+
ENGAGEMENT_TYPE: [
|
|
4762
|
+
"Less than 30 hrs/week",
|
|
4763
|
+
"More than 30 hrs/week",
|
|
4764
|
+
"Unspecified",
|
|
4765
|
+
],
|
|
4766
|
+
VENDOR_TYPE: ["Independent", "Agency", "Unspecified"],
|
|
4767
|
+
PAYMENT_TYPE: ["Fixed-price", "Hourly", "Unspecified"],
|
|
4768
|
+
TALENT_TYPE: ["Agency", "Independent", "Unspecified"],
|
|
4769
|
+
ENGLISH_LEVELS: [
|
|
4770
|
+
"Fluent",
|
|
4771
|
+
"Conversational",
|
|
4772
|
+
"Native or Bilingual",
|
|
4773
|
+
"Unspecified",
|
|
4774
|
+
],
|
|
4775
|
+
EXPERIENCE_LEVELS: ["Entry level", "Intermediate", "Expert"],
|
|
4776
|
+
REQUIRED_EARNINGS: [100, 1000, 10000],
|
|
4777
|
+
REQUIRED_JSS: [">80%", ">90%", "100%", "RT"],
|
|
4778
|
+
HIERARCHICAL_CATEGORIES: [
|
|
4779
|
+
{
|
|
4780
|
+
label: "Accounting & Consulting",
|
|
4781
|
+
value: "accounting-consulting",
|
|
4782
|
+
children: [
|
|
4783
|
+
"Accounting & Bookkeeping",
|
|
4784
|
+
"Financial Planning",
|
|
4785
|
+
"Management Consulting & Analysis",
|
|
4786
|
+
"Other - Accounting & Consulting",
|
|
4787
|
+
"Personal & Professional Coaching",
|
|
4788
|
+
"Recruiting & Human Resources",
|
|
4789
|
+
],
|
|
4790
|
+
},
|
|
4791
|
+
{
|
|
4792
|
+
label: "Admin Support",
|
|
4793
|
+
value: "admin-support",
|
|
4794
|
+
children: [
|
|
4795
|
+
"Data Entry & Transcription Services",
|
|
4796
|
+
"Market Research & Product Reviews",
|
|
4797
|
+
"Project Management",
|
|
4798
|
+
"Virtual Assistance",
|
|
4799
|
+
],
|
|
4800
|
+
},
|
|
4801
|
+
{
|
|
4802
|
+
label: "Customer Service",
|
|
4803
|
+
value: "customer-service",
|
|
4804
|
+
children: [
|
|
4805
|
+
"Community Management & Tagging",
|
|
4806
|
+
"Customer Service & Tech Support",
|
|
4807
|
+
],
|
|
4808
|
+
},
|
|
4809
|
+
{
|
|
4810
|
+
label: "Data Science & Analytics",
|
|
4811
|
+
value: "data-science-analytics",
|
|
4812
|
+
children: [
|
|
4813
|
+
"AI & Machine Learning",
|
|
4814
|
+
"Data Analysis & Testing",
|
|
4815
|
+
"Data Extraction/ETL",
|
|
4816
|
+
"Data Mining & Management",
|
|
4817
|
+
],
|
|
4818
|
+
},
|
|
4819
|
+
{
|
|
4820
|
+
label: "Design & Creative",
|
|
4821
|
+
value: "design-creative",
|
|
4822
|
+
children: [
|
|
4823
|
+
"Art & Illustration",
|
|
4824
|
+
"Audio & Music Production",
|
|
4825
|
+
"Branding & Logo Design",
|
|
4826
|
+
"Graphic, Editorial & Presentation Design",
|
|
4827
|
+
"NFT, AR/VR & Game Art",
|
|
4828
|
+
"Performing Arts",
|
|
4829
|
+
"Photography",
|
|
4830
|
+
"Product Design",
|
|
4831
|
+
"Video & Animation",
|
|
4832
|
+
],
|
|
4833
|
+
},
|
|
4834
|
+
{
|
|
4835
|
+
label: "Engineering & Architecture",
|
|
4836
|
+
value: "engineering-architecture",
|
|
4837
|
+
children: [
|
|
4838
|
+
"3D Modeling & CAD",
|
|
4839
|
+
"Building & Landscape Architecture",
|
|
4840
|
+
"Chemical Engineering",
|
|
4841
|
+
"Civil & Structural Engineering",
|
|
4842
|
+
"Contract Manufacturing",
|
|
4843
|
+
"Electrical & Electronic Engineering",
|
|
4844
|
+
"Energy & Mechanical Engineering",
|
|
4845
|
+
],
|
|
4846
|
+
},
|
|
4847
|
+
{
|
|
4848
|
+
label: "IT & Networking",
|
|
4849
|
+
value: "it-networking",
|
|
4850
|
+
children: [
|
|
4851
|
+
"Database Management & Administration",
|
|
4852
|
+
"DevOps & Solution Architecture",
|
|
4853
|
+
"ERP/CRM Software",
|
|
4854
|
+
"Information Security & Compliance",
|
|
4855
|
+
"Network & System Administration",
|
|
4856
|
+
],
|
|
4857
|
+
},
|
|
4858
|
+
{
|
|
4859
|
+
label: "Legal",
|
|
4860
|
+
value: "legal",
|
|
4861
|
+
children: [
|
|
4862
|
+
"Corporate & Contract Law",
|
|
4863
|
+
"Finance & Tax Law",
|
|
4864
|
+
"International & Immigration Law",
|
|
4865
|
+
"Public Law",
|
|
4866
|
+
],
|
|
4867
|
+
},
|
|
4868
|
+
{
|
|
4869
|
+
label: "Sales & Marketing",
|
|
4870
|
+
value: "sales-marketing",
|
|
4871
|
+
children: [
|
|
4872
|
+
"Digital Marketing",
|
|
4873
|
+
"Lead Generation & Telemarketing",
|
|
4874
|
+
"Marketing, PR & Brand Strategy",
|
|
4875
|
+
],
|
|
4876
|
+
},
|
|
4877
|
+
{
|
|
4878
|
+
label: "Translation",
|
|
4879
|
+
value: "translation",
|
|
4880
|
+
children: [
|
|
4881
|
+
"Language Tutoring & Interpretation",
|
|
4882
|
+
"Translation & Localization Services",
|
|
4883
|
+
],
|
|
4884
|
+
},
|
|
4885
|
+
{
|
|
4886
|
+
label: "Software Development",
|
|
4887
|
+
value: "software-development",
|
|
4888
|
+
children: [
|
|
4889
|
+
"AI Apps & Integration",
|
|
4890
|
+
"Blockchain, NFT & Cryptocurrency",
|
|
4891
|
+
"Desktop Application Development",
|
|
4892
|
+
"Ecommerce Development",
|
|
4893
|
+
"Game Design & Development",
|
|
4894
|
+
"Mobile Development",
|
|
4895
|
+
"Other - Software Development",
|
|
4896
|
+
"Product Management & Scrum",
|
|
4897
|
+
"QA Testing",
|
|
4898
|
+
"Scripts & Utilities",
|
|
4899
|
+
"Web & Mobile Design",
|
|
4900
|
+
"Web Development",
|
|
4901
|
+
],
|
|
4902
|
+
},
|
|
4903
|
+
{
|
|
4904
|
+
label: "Writing",
|
|
4905
|
+
value: "writing",
|
|
4906
|
+
children: [
|
|
4907
|
+
"Content Writing",
|
|
4908
|
+
"Editing & Proofreading Services",
|
|
4909
|
+
"Professional & Business Writing",
|
|
4910
|
+
"Sales & Marketing Copywriting",
|
|
4911
|
+
],
|
|
4912
|
+
},
|
|
4913
|
+
],
|
|
4914
|
+
CATEGORIES: [
|
|
4915
|
+
"Personal & Professional Coaching",
|
|
4916
|
+
"Accounting & Bookkeeping",
|
|
4917
|
+
"Financial Planning",
|
|
4918
|
+
"Recruiting & Human Resources",
|
|
4919
|
+
"Management Consulting & Analysis",
|
|
4920
|
+
"Other - Accounting & Consulting",
|
|
4921
|
+
"Data Entry & Transcription Services",
|
|
4922
|
+
"Virtual Assistance",
|
|
4923
|
+
"Project Management",
|
|
4924
|
+
"Market Research & Product Reviews",
|
|
4925
|
+
"Community Management & Tagging",
|
|
4926
|
+
"Customer Service & Tech Support",
|
|
4927
|
+
"Data Analysis & Testing",
|
|
4928
|
+
"Data Extraction/ETL",
|
|
4929
|
+
"Data Mining & Management",
|
|
4930
|
+
"AI & Machine Learning",
|
|
4931
|
+
"Art & Illustration",
|
|
4932
|
+
"Audio & Music Production",
|
|
4933
|
+
"Branding & Logo Design",
|
|
4934
|
+
"NFT, AR/VR & Game Art",
|
|
4935
|
+
"Graphic, Editorial & Presentation Design",
|
|
4936
|
+
"Performing Arts",
|
|
4937
|
+
"Photography",
|
|
4938
|
+
"Product Design",
|
|
4939
|
+
"Video & Animation",
|
|
4940
|
+
"Building & Landscape Architecture",
|
|
4941
|
+
"Chemical Engineering",
|
|
4942
|
+
"Civil & Structural Engineering",
|
|
4943
|
+
"Contract Manufacturing",
|
|
4944
|
+
"Electrical & Electronic Engineering",
|
|
4945
|
+
"Energy & Mechanical Engineering",
|
|
4946
|
+
"3D Modeling & CAD",
|
|
4947
|
+
"Database Management & Administration",
|
|
4948
|
+
"ERP/CRM Software",
|
|
4949
|
+
"Information Security & Compliance",
|
|
4950
|
+
"Network & System Administration",
|
|
4951
|
+
"DevOps & Solution Architecture",
|
|
4952
|
+
"Corporate & Contract Law",
|
|
4953
|
+
"International & Immigration Law",
|
|
4954
|
+
"Finance & Tax Law",
|
|
4955
|
+
"Public Law",
|
|
4956
|
+
"Digital Marketing",
|
|
4957
|
+
"Lead Generation & Telemarketing",
|
|
4958
|
+
"Marketing, PR & Brand Strategy",
|
|
4959
|
+
"Language Tutoring & Interpretation",
|
|
4960
|
+
"Translation & Localization Services",
|
|
4961
|
+
"Blockchain, NFT & Cryptocurrency",
|
|
4962
|
+
"AI Apps & Integration",
|
|
4963
|
+
"Desktop Application Development",
|
|
4964
|
+
"Ecommerce Development",
|
|
4965
|
+
"Game Design & Development",
|
|
4966
|
+
"Mobile Development",
|
|
4967
|
+
"Other - Software Development",
|
|
4968
|
+
"Product Management & Scrum",
|
|
4969
|
+
"QA Testing",
|
|
4970
|
+
"Scripts & Utilities",
|
|
4971
|
+
"Web & Mobile Design",
|
|
4972
|
+
"Web Development",
|
|
4973
|
+
"Sales & Marketing Copywriting",
|
|
4974
|
+
"Content Writing",
|
|
4975
|
+
"Editing & Proofreading Services",
|
|
4976
|
+
"Professional & Business Writing",
|
|
4977
|
+
],
|
|
4978
|
+
CLIENT_INDUSTRY: [
|
|
4979
|
+
"Aerospace",
|
|
4980
|
+
"Agriculture & Forestry",
|
|
4981
|
+
"Art & Design",
|
|
4982
|
+
"Automotive",
|
|
4983
|
+
"Aviation",
|
|
4984
|
+
"Education",
|
|
4985
|
+
"Energy & Utilities",
|
|
4986
|
+
"Engineering & Architecture",
|
|
4987
|
+
"Fashion & Beauty",
|
|
4988
|
+
"Finance & Accounting",
|
|
4989
|
+
"Food & Beverage",
|
|
4990
|
+
"Government & Public Sector",
|
|
4991
|
+
"Health & Fitness",
|
|
4992
|
+
"HR & Business Services",
|
|
4993
|
+
"Legal",
|
|
4994
|
+
"Manufacturing & Construction",
|
|
4995
|
+
"Media & Entertainment",
|
|
4996
|
+
"Military & Defense",
|
|
4997
|
+
"Mining",
|
|
4998
|
+
"Real Estate",
|
|
4999
|
+
"Retail & Consumer Goods",
|
|
5000
|
+
"Sales & Marketing",
|
|
5001
|
+
"Science & Medicine",
|
|
5002
|
+
"Sports & Recreation",
|
|
5003
|
+
"Supply Chain & Logistics",
|
|
5004
|
+
"Tech & IT",
|
|
5005
|
+
"Transportation & Warehousing",
|
|
5006
|
+
"Travel & Hospitality",
|
|
5007
|
+
],
|
|
5008
|
+
CLIENT_SIZE: [
|
|
5009
|
+
"Individual client",
|
|
5010
|
+
"Small company (2-9 people)",
|
|
5011
|
+
"Mid-sized company (10-99 people)",
|
|
5012
|
+
"Large company (100-1,000 people)",
|
|
5013
|
+
"Large company (1,000+ people)",
|
|
5014
|
+
"Unspecified",
|
|
5015
|
+
],
|
|
5016
|
+
};
|
|
5017
|
+
|
|
5018
|
+
// Enum definitions for fixed options
|
|
5019
|
+
const projectDurationEnum = z.enum(JOB_FILTER_OPTIONS.PROJECT_DURATION);
|
|
5020
|
+
const engagementTypeEnum = z.enum(JOB_FILTER_OPTIONS.ENGAGEMENT_TYPE);
|
|
5021
|
+
const vendorTypeEnum = z.enum(JOB_FILTER_OPTIONS.VENDOR_TYPE);
|
|
5022
|
+
const paymentTypeEnum = z.enum(JOB_FILTER_OPTIONS.PAYMENT_TYPE);
|
|
5023
|
+
const categoryEnum = z.enum(JOB_FILTER_OPTIONS.CATEGORIES);
|
|
5024
|
+
const clientIndustryEnum = z.enum(JOB_FILTER_OPTIONS.CLIENT_INDUSTRY);
|
|
5025
|
+
const clientSizeEnum = z.enum(JOB_FILTER_OPTIONS.CLIENT_SIZE);
|
|
5026
|
+
const talentTypeEnum = z.enum(JOB_FILTER_OPTIONS.TALENT_TYPE);
|
|
5027
|
+
const englishLevelEnum = z.enum(JOB_FILTER_OPTIONS.ENGLISH_LEVELS);
|
|
5028
|
+
const experienceLevelEnum = z.enum(JOB_FILTER_OPTIONS.EXPERIENCE_LEVELS);
|
|
5029
|
+
const regionEnum = z.enum(["all", "Worldwide", "UKOnly", "USOnly"]);
|
|
5030
|
+
const requiredEarningsEnum = z.union([
|
|
5031
|
+
z.literal(100),
|
|
5032
|
+
z.literal(1000),
|
|
5033
|
+
z.literal(10000),
|
|
5034
|
+
]);
|
|
5035
|
+
const requiredJSSEnum = z.enum(JOB_FILTER_OPTIONS.REQUIRED_JSS);
|
|
5036
|
+
// Main job filters schema
|
|
5037
|
+
const jobFiltersSchema = z.object({
|
|
5038
|
+
keywords: z
|
|
5039
|
+
.object({
|
|
5040
|
+
includes: z.string().nullable(),
|
|
5041
|
+
excludes: z.string().nullable(),
|
|
5042
|
+
})
|
|
5043
|
+
.nullable(),
|
|
5044
|
+
isFeatured: z.enum(["all", "true", "false"]).nullable(),
|
|
5045
|
+
regions: z.array(regionEnum).nullable(),
|
|
5046
|
+
categories: z
|
|
5047
|
+
.object({
|
|
5048
|
+
includes: z.array(categoryEnum).nullable(),
|
|
5049
|
+
excludes: z.array(categoryEnum).nullable(),
|
|
5050
|
+
})
|
|
5051
|
+
.nullable(),
|
|
5052
|
+
payment: z
|
|
5053
|
+
.object({
|
|
5054
|
+
paymentType: z.array(paymentTypeEnum).nullable(),
|
|
5055
|
+
minFixedPrice: z.number().nullable(),
|
|
5056
|
+
maxFixedPrice: z.number().nullable(),
|
|
5057
|
+
minHourlyRate: z.number().nullable(),
|
|
5058
|
+
maxHourlyRate: z.number().nullable(),
|
|
5059
|
+
})
|
|
5060
|
+
.nullable(),
|
|
5061
|
+
projectDuration: z.array(projectDurationEnum).nullable(),
|
|
5062
|
+
experienceLevel: z.array(experienceLevelEnum).nullable(),
|
|
5063
|
+
questions: z
|
|
5064
|
+
.object({
|
|
5065
|
+
hasQuestions: z.enum(["all", "yes", "no"]).default("all"),
|
|
5066
|
+
})
|
|
5067
|
+
.nullable(),
|
|
5068
|
+
engagementType: z.array(engagementTypeEnum).nullable(),
|
|
5069
|
+
clientInfo: z
|
|
5070
|
+
.object({
|
|
5071
|
+
isPaymentVerified: z.enum(["all", "true", "false"]).default("all"),
|
|
5072
|
+
isPhoneVerified: z.enum(["all", "true", "false"]).default("all"),
|
|
5073
|
+
enterpriseClient: z.enum(["all", "true", "false"]).default("all"),
|
|
5074
|
+
clientLocationIncludes: z.array(z.string()).nullable(),
|
|
5075
|
+
clientLocationExcludes: z.array(z.string()).nullable(),
|
|
5076
|
+
minReviewScore: z.number().min(0).max(5).nullable(),
|
|
5077
|
+
minTotalSpent: z.number().nullable(),
|
|
5078
|
+
minHireRate: z.number().min(0).max(100).nullable(),
|
|
5079
|
+
clientIndustry: z.array(clientIndustryEnum).nullable(),
|
|
5080
|
+
companySize: z.array(clientSizeEnum).nullable(),
|
|
5081
|
+
minJobsPosted: z.number().nullable(),
|
|
5082
|
+
minAvgHourlyRate: z.number().nullable(),
|
|
5083
|
+
minNumReviews: z.number().nullable(),
|
|
5084
|
+
memberSinceFrom: z.string().date().nullable(),
|
|
5085
|
+
memberSinceTo: z.string().date().nullable(),
|
|
5086
|
+
})
|
|
5087
|
+
.nullable(),
|
|
5088
|
+
vendorQualifications: z
|
|
5089
|
+
.object({
|
|
5090
|
+
locationIncludes: z.array(z.string()).nullable(),
|
|
5091
|
+
locationExcludes: z.array(z.string()).nullable(),
|
|
5092
|
+
talentTypes: z.array(talentTypeEnum).nullable(),
|
|
5093
|
+
englishLevels: z.array(englishLevelEnum).nullable(),
|
|
5094
|
+
includeRisingTalent: z.string().nullable(),
|
|
5095
|
+
requiredEarnings: requiredEarningsEnum.nullable(),
|
|
5096
|
+
requiredJSS: z.array(requiredJSSEnum).nullable(),
|
|
5097
|
+
})
|
|
5098
|
+
.nullable(),
|
|
5099
|
+
});
|
|
5100
|
+
|
|
5101
|
+
// Filter Option Schema
|
|
5102
|
+
const filterOptionItemSchema = z.object({
|
|
5103
|
+
key: z.string(),
|
|
5104
|
+
count: z.number(),
|
|
5189
5105
|
});
|
|
5190
|
-
|
|
5191
|
-
|
|
5192
|
-
|
|
5193
|
-
|
|
5194
|
-
|
|
5195
|
-
|
|
5196
|
-
openJobs: arrayType(anyType()),
|
|
5197
|
-
workHistory: workHistorySchema,
|
|
5198
|
-
similarJobs: arrayType(anyType()),
|
|
5199
|
-
sands: sandsSchema,
|
|
5200
|
-
auth: authSchema,
|
|
5201
|
-
applicants: objectType({
|
|
5202
|
-
applicantsBidsStats: anyType().nullable(),
|
|
5203
|
-
}),
|
|
5204
|
-
connects: connectsSchema.nullish(),
|
|
5205
|
-
enterpriseJobAdditionalInfo: recordType(anyType()),
|
|
5206
|
-
applicationContext: applicationContextSchema,
|
|
5207
|
-
profileMatchServiceUid: stringType(),
|
|
5208
|
-
seo: objectType({
|
|
5209
|
-
title: stringType(),
|
|
5210
|
-
description: stringType(),
|
|
5211
|
-
url: stringType(),
|
|
5212
|
-
}),
|
|
5213
|
-
teamUid: anyType().nullable(),
|
|
5214
|
-
proposalPermissions: objectType({
|
|
5215
|
-
freelancerAllowed: booleanType(),
|
|
5216
|
-
clientAllowed: booleanType(),
|
|
5217
|
-
}),
|
|
5218
|
-
jobSlug: anyType().nullable(),
|
|
5219
|
-
prefillWith: anyType().nullable(),
|
|
5220
|
-
isGroupOpportunity: booleanType(),
|
|
5221
|
-
workLocation: anyType().nullable(),
|
|
5222
|
-
isPhoneVerified: booleanType(),
|
|
5223
|
-
errorResponse: anyType().nullable(),
|
|
5224
|
-
isApplyBlocked: booleanType(),
|
|
5225
|
-
hasAiInterview: booleanType(),
|
|
5226
|
-
talentFeePromotion: booleanType().nullish(),
|
|
5106
|
+
// Filter Options Response Schema
|
|
5107
|
+
const filterOptionsResponseSchema = z.object({
|
|
5108
|
+
locations: z.array(filterOptionItemSchema),
|
|
5109
|
+
englishLevels: z.array(filterOptionItemSchema),
|
|
5110
|
+
talentTypes: z.array(filterOptionItemSchema),
|
|
5111
|
+
experienceLevels: z.array(filterOptionItemSchema),
|
|
5227
5112
|
});
|
|
5228
5113
|
|
|
5229
5114
|
const jobSkillsSchema = objectType({
|
|
@@ -5340,6 +5225,130 @@ const upworkJobSchema = objectType({
|
|
|
5340
5225
|
activity: recordType(jobActivityOffsetEnum, jobActivitySchema).nullish(),
|
|
5341
5226
|
activityDelta: jobActivityDeltaSchema.nullish(),
|
|
5342
5227
|
});
|
|
5228
|
+
const jobActivityOffsetHourSchema = custom((val) => jobActivityOffsetHours.includes(val));
|
|
5229
|
+
const jobActivityUpdateSchema = objectType({
|
|
5230
|
+
jobUrl: stringType(),
|
|
5231
|
+
data: jobActivitySchema,
|
|
5232
|
+
offsetHour: jobActivityOffsetHourSchema,
|
|
5233
|
+
scrapedAt: numberType(),
|
|
5234
|
+
});
|
|
5235
|
+
const jobActivitySnapshotSchema = objectType({
|
|
5236
|
+
jobUrl: stringType(),
|
|
5237
|
+
activity: jobActivitySchema,
|
|
5238
|
+
postedAt: numberType(),
|
|
5239
|
+
scrapedAt: numberType(),
|
|
5240
|
+
hoursSincePosted: numberType(),
|
|
5241
|
+
});
|
|
5242
|
+
const jobListingSchema = objectType({
|
|
5243
|
+
uid: stringType().nullable(),
|
|
5244
|
+
title: stringType().nullable(),
|
|
5245
|
+
jobUrl: stringType().nullable(),
|
|
5246
|
+
datetime: stringType().nullable(),
|
|
5247
|
+
isFeatured: booleanType().nullable(),
|
|
5248
|
+
region: regionSchema.nullable(),
|
|
5249
|
+
});
|
|
5250
|
+
|
|
5251
|
+
const scraperAccountSchema = z.object({
|
|
5252
|
+
id: z.string(),
|
|
5253
|
+
email: z.string().email(),
|
|
5254
|
+
password: z.string(),
|
|
5255
|
+
cookies: z.record(z.string(), z.string()),
|
|
5256
|
+
proxy_credentials: z.string(),
|
|
5257
|
+
region: regionEnum,
|
|
5258
|
+
isActive: z.boolean(),
|
|
5259
|
+
lastUsed: z.number(),
|
|
5260
|
+
status: accountStatusSchema,
|
|
5261
|
+
verified: z.boolean(),
|
|
5262
|
+
errors: z.array(z.object({
|
|
5263
|
+
errorMessage: z.string(),
|
|
5264
|
+
timestamp: z.number(),
|
|
5265
|
+
screenshotUrl: z.string(),
|
|
5266
|
+
htmlUrl: z.string(),
|
|
5267
|
+
})),
|
|
5268
|
+
});
|
|
5269
|
+
const createScraperAccountSchema = scraperAccountSchema.pick({
|
|
5270
|
+
email: true,
|
|
5271
|
+
password: true,
|
|
5272
|
+
proxy_credentials: true,
|
|
5273
|
+
region: true,
|
|
5274
|
+
verified: true,
|
|
5275
|
+
isActive: true,
|
|
5276
|
+
});
|
|
5277
|
+
const updateScraperAccountSchema = scraperAccountSchema
|
|
5278
|
+
.omit({
|
|
5279
|
+
id: true,
|
|
5280
|
+
})
|
|
5281
|
+
.partial();
|
|
5282
|
+
|
|
5283
|
+
const bidPayloadProposalDataSchema = z.object({
|
|
5284
|
+
coverLetter: z.string(),
|
|
5285
|
+
questionAnswerPairs: z
|
|
5286
|
+
.array(z.object({
|
|
5287
|
+
question: z.string(),
|
|
5288
|
+
answer: z.string(),
|
|
5289
|
+
}))
|
|
5290
|
+
.nullable(),
|
|
5291
|
+
boostingEnabled: z.boolean(),
|
|
5292
|
+
minimumBoost: z.number().nullable(),
|
|
5293
|
+
maximumBoost: z.number().nullable(),
|
|
5294
|
+
});
|
|
5295
|
+
const freelancerBidProposalDataSchema = bidPayloadProposalDataSchema;
|
|
5296
|
+
const agencyBidProposalDataSchema = bidPayloadProposalDataSchema.extend({
|
|
5297
|
+
agencyName: z.string(),
|
|
5298
|
+
contractorName: z.string(),
|
|
5299
|
+
specializedProfile: z.string().nullable(),
|
|
5300
|
+
});
|
|
5301
|
+
const bidPayloadSchema = z.object({
|
|
5302
|
+
jobUrl: z.string(),
|
|
5303
|
+
username: z.string(),
|
|
5304
|
+
password: z.string(),
|
|
5305
|
+
});
|
|
5306
|
+
const agencyBidPayloadSchema = bidPayloadSchema.extend({
|
|
5307
|
+
proposalData: agencyBidProposalDataSchema,
|
|
5308
|
+
});
|
|
5309
|
+
const freelancerBidPayloadSchema = bidPayloadSchema.extend({
|
|
5310
|
+
proposalData: freelancerBidProposalDataSchema,
|
|
5311
|
+
});
|
|
5312
|
+
const bidDtoSchema = z.object({
|
|
5313
|
+
organizationId: z.string(),
|
|
5314
|
+
campaignId: z.string(),
|
|
5315
|
+
leadId: z.string(),
|
|
5316
|
+
});
|
|
5317
|
+
|
|
5318
|
+
const bidSuccessSchema = z.object({
|
|
5319
|
+
status: z.literal("success"),
|
|
5320
|
+
biddingAmount: z.number(),
|
|
5321
|
+
boosted: z.boolean(),
|
|
5322
|
+
boostingAmount: z.number(),
|
|
5323
|
+
});
|
|
5324
|
+
const bidFailedSchema = z.object({
|
|
5325
|
+
status: z.literal("failed"),
|
|
5326
|
+
errorMessage: z.string(),
|
|
5327
|
+
});
|
|
5328
|
+
|
|
5329
|
+
const agentStatusSchema = z.enum([
|
|
5330
|
+
"suitabilityPending",
|
|
5331
|
+
"suitabilityProcessing",
|
|
5332
|
+
"suitabilityComplete",
|
|
5333
|
+
"suitabilityFailed",
|
|
5334
|
+
"proposalProcessing",
|
|
5335
|
+
"proposalComplete",
|
|
5336
|
+
"proposalFailed",
|
|
5337
|
+
"biddingProcessing",
|
|
5338
|
+
"biddingComplete",
|
|
5339
|
+
"biddingFailed",
|
|
5340
|
+
"jobArchived",
|
|
5341
|
+
]);
|
|
5342
|
+
const leadStatusSchema = z.enum([
|
|
5343
|
+
"leads",
|
|
5344
|
+
"contacted",
|
|
5345
|
+
"viewed",
|
|
5346
|
+
"replied",
|
|
5347
|
+
"negotiations",
|
|
5348
|
+
"won",
|
|
5349
|
+
"lost",
|
|
5350
|
+
]);
|
|
5351
|
+
|
|
5343
5352
|
const questionAnswerPairSchema = z.object({
|
|
5344
5353
|
question: z.string(),
|
|
5345
5354
|
answer: z.string(),
|
|
@@ -5354,7 +5363,6 @@ const leadSchema = upworkJobSchema
|
|
|
5354
5363
|
questionAnswerPairs: arrayType(questionAnswerPairSchema).nullable(),
|
|
5355
5364
|
agentStatus: agentStatusSchema.nullable(),
|
|
5356
5365
|
leadStatus: leadStatusSchema.nullable(),
|
|
5357
|
-
notes: arrayType(leadNoteSchema).nullable(),
|
|
5358
5366
|
biddingAmount: numberType().nullable(),
|
|
5359
5367
|
boosted: booleanType().nullable(),
|
|
5360
5368
|
boostingAmount: numberType().nullable(),
|
|
@@ -5370,27 +5378,20 @@ const leadResponseSchema = objectType({
|
|
|
5370
5378
|
hasMore: booleanType(),
|
|
5371
5379
|
leadCounts: numberType().nullable(),
|
|
5372
5380
|
});
|
|
5373
|
-
|
|
5374
|
-
|
|
5375
|
-
|
|
5376
|
-
|
|
5377
|
-
|
|
5378
|
-
|
|
5379
|
-
|
|
5380
|
-
});
|
|
5381
|
-
const jobActivityOffsetHourSchema = custom((val) => jobActivityOffsetHours.includes(val));
|
|
5382
|
-
const jobActivityUpdateSchema = objectType({
|
|
5383
|
-
jobUrl: stringType(),
|
|
5384
|
-
data: jobActivitySchema,
|
|
5385
|
-
offsetHour: jobActivityOffsetHourSchema,
|
|
5386
|
-
scrapedAt: numberType(),
|
|
5381
|
+
// ============ // Api ============
|
|
5382
|
+
// Search Leads Schema
|
|
5383
|
+
const findLeadsRequestSchema = z.object({
|
|
5384
|
+
filters: z.custom().optional(),
|
|
5385
|
+
offset: z.number().default(0).optional(),
|
|
5386
|
+
limit: z.number().default(10).optional(),
|
|
5387
|
+
campaignId: z.string().optional(),
|
|
5387
5388
|
});
|
|
5388
|
-
|
|
5389
|
-
|
|
5390
|
-
|
|
5391
|
-
|
|
5392
|
-
|
|
5393
|
-
|
|
5389
|
+
// Lead Search Response Schema
|
|
5390
|
+
const findLeadsResponseSchema = z.object({
|
|
5391
|
+
total: z.number(),
|
|
5392
|
+
jobs: z.array(upworkJobSchema),
|
|
5393
|
+
lastMonthTotal: z.number().optional(),
|
|
5394
|
+
error: z.string().optional(),
|
|
5394
5395
|
});
|
|
5395
5396
|
|
|
5396
5397
|
const campaignExpensesSchema = z.object({
|
|
@@ -5479,8 +5480,6 @@ const campaignInsightsSchema = z.object({
|
|
|
5479
5480
|
suitabilityRange90to100: z.number(),
|
|
5480
5481
|
});
|
|
5481
5482
|
|
|
5482
|
-
const campaignJobCountSchema = z.record(leadStatusSchema, z.number());
|
|
5483
|
-
|
|
5484
5483
|
const campaignAnalyticsStatsSchema = z.object({
|
|
5485
5484
|
jobsAnalyzed: z.number(),
|
|
5486
5485
|
totalStats: z.object({
|
|
@@ -5528,74 +5527,57 @@ const campaignAIMetricsSchema = z.object({
|
|
|
5528
5527
|
connectsSaved: z.number(),
|
|
5529
5528
|
});
|
|
5530
5529
|
|
|
5531
|
-
const chatMessageSchema = z.object({
|
|
5532
|
-
id: z.string(),
|
|
5533
|
-
content: z.string(),
|
|
5534
|
-
role: z.enum(['user', 'assistant']),
|
|
5535
|
-
timestamp: z.string(),
|
|
5536
|
-
});
|
|
5537
|
-
const newChatMessageSchema = chatMessageSchema.omit({
|
|
5538
|
-
id: true,
|
|
5539
|
-
});
|
|
5540
|
-
|
|
5541
|
-
const agencyConfigSchema = z.object({
|
|
5542
|
-
agencyName: z.string(),
|
|
5543
|
-
contractorName: z.string(),
|
|
5544
|
-
specializedProfile: z.string().nullable(),
|
|
5545
|
-
accountId: z.string(),
|
|
5546
|
-
});
|
|
5547
|
-
|
|
5548
5530
|
const LogEventTypeEnum = z.enum([
|
|
5549
5531
|
// Scraper Events
|
|
5550
|
-
|
|
5551
|
-
|
|
5552
|
-
|
|
5553
|
-
|
|
5554
|
-
|
|
5555
|
-
|
|
5556
|
-
|
|
5557
|
-
|
|
5558
|
-
|
|
5532
|
+
"scraperStarted",
|
|
5533
|
+
"scraperCompleted",
|
|
5534
|
+
"jobScraped",
|
|
5535
|
+
"jobScrapeFailed",
|
|
5536
|
+
"jobsIndexed",
|
|
5537
|
+
"jobDuplicateSkipped",
|
|
5538
|
+
"scraperFailed",
|
|
5539
|
+
"jobActivityScraped",
|
|
5540
|
+
"jobActivityScrapeFailed",
|
|
5559
5541
|
// Feed Scraper Events
|
|
5560
|
-
|
|
5561
|
-
|
|
5562
|
-
|
|
5563
|
-
|
|
5542
|
+
"feedScrapeStarted",
|
|
5543
|
+
"feedScrapeCompleted",
|
|
5544
|
+
"feedScrapeFailed",
|
|
5545
|
+
"jobListingScraped",
|
|
5564
5546
|
// Job Sync & Campaign Matching
|
|
5565
|
-
|
|
5566
|
-
|
|
5567
|
-
|
|
5547
|
+
"jobSyncPublished",
|
|
5548
|
+
"jobSyncReceived",
|
|
5549
|
+
"leadsCreatedAndSynced",
|
|
5568
5550
|
// Suitability Events
|
|
5569
|
-
|
|
5570
|
-
|
|
5571
|
-
|
|
5572
|
-
|
|
5573
|
-
|
|
5551
|
+
"suitabilityPending",
|
|
5552
|
+
"suitabilityProcessing",
|
|
5553
|
+
"suitabilityComplete",
|
|
5554
|
+
"suitabilityFailed",
|
|
5555
|
+
"manualSuitabilityAnalyzed",
|
|
5574
5556
|
// Proposal Events
|
|
5575
|
-
|
|
5576
|
-
|
|
5577
|
-
|
|
5578
|
-
|
|
5557
|
+
"proposalProcessing",
|
|
5558
|
+
"proposalComplete",
|
|
5559
|
+
"proposalFailed",
|
|
5560
|
+
"manualProposalGenerated",
|
|
5579
5561
|
// Bidding Events
|
|
5580
|
-
|
|
5581
|
-
|
|
5582
|
-
|
|
5583
|
-
|
|
5584
|
-
|
|
5585
|
-
|
|
5586
|
-
|
|
5587
|
-
|
|
5562
|
+
"biddingProcessing",
|
|
5563
|
+
"biddingComplete",
|
|
5564
|
+
"biddingFailed",
|
|
5565
|
+
"biddingSkipped",
|
|
5566
|
+
"biddingPending",
|
|
5567
|
+
"biddingRetry",
|
|
5568
|
+
"biddingInsufficientConnects",
|
|
5569
|
+
"biddingWarningAlert",
|
|
5588
5570
|
// System/Generic Events
|
|
5589
|
-
|
|
5590
|
-
|
|
5591
|
-
|
|
5592
|
-
|
|
5593
|
-
|
|
5571
|
+
"errorLogged",
|
|
5572
|
+
"cloudTaskRetry",
|
|
5573
|
+
"manualLeadEdited",
|
|
5574
|
+
"leadArchived",
|
|
5575
|
+
"auditTrailLogged",
|
|
5594
5576
|
// Knowledge Base Events
|
|
5595
|
-
|
|
5596
|
-
|
|
5577
|
+
"knowledgeBaseGenerationComplete",
|
|
5578
|
+
"knowledgeBaseGenerationFailed",
|
|
5597
5579
|
// Model Chain Events
|
|
5598
|
-
|
|
5580
|
+
"modelFailed",
|
|
5599
5581
|
]);
|
|
5600
5582
|
const logEventSchema = z.object({
|
|
5601
5583
|
// The type of event (use a z.enum if possible)
|
|
@@ -5603,7 +5585,7 @@ const logEventSchema = z.object({
|
|
|
5603
5585
|
// The service that triggered the event
|
|
5604
5586
|
source: z.string(), // e.g. "lancer-agents", "lancer-bidding"
|
|
5605
5587
|
// Optional: Allow logging non-lead events in the future
|
|
5606
|
-
resourceType: z.string().default(
|
|
5588
|
+
resourceType: z.string().default("lead"), // e.g. "lead", "campaign", "user"
|
|
5607
5589
|
// ID of the resource (primary entity affected)
|
|
5608
5590
|
resourceId: z.string().nullable(), // fallback if leadId is not applicable
|
|
5609
5591
|
// Lead-level metadata
|
|
@@ -6170,16 +6152,6 @@ const transactionSchema = objectType({
|
|
|
6170
6152
|
timestamp: numberType(),
|
|
6171
6153
|
});
|
|
6172
6154
|
|
|
6173
|
-
const leadStatusDisplayMap = {
|
|
6174
|
-
leads: "Leads",
|
|
6175
|
-
contacted: "Contacted",
|
|
6176
|
-
viewed: "Viewed",
|
|
6177
|
-
replied: "Replied",
|
|
6178
|
-
negotiations: "Negotiations",
|
|
6179
|
-
won: "Won",
|
|
6180
|
-
lost: "Lost",
|
|
6181
|
-
};
|
|
6182
|
-
|
|
6183
6155
|
// Base collection names
|
|
6184
6156
|
const COLLECTIONS = {
|
|
6185
6157
|
USERS: "users",
|
|
@@ -12513,22 +12485,22 @@ const buildRoute = (route, params = {}) => {
|
|
|
12513
12485
|
};
|
|
12514
12486
|
|
|
12515
12487
|
const accountStatusOrder = [
|
|
12516
|
-
|
|
12517
|
-
|
|
12518
|
-
|
|
12519
|
-
|
|
12520
|
-
|
|
12488
|
+
"verification_required",
|
|
12489
|
+
"shadow_banned",
|
|
12490
|
+
"healthy",
|
|
12491
|
+
"banned",
|
|
12492
|
+
"suspended",
|
|
12521
12493
|
];
|
|
12522
12494
|
const accountStatusDisplayMap = {
|
|
12523
|
-
verification_required:
|
|
12524
|
-
shadow_banned:
|
|
12525
|
-
healthy:
|
|
12526
|
-
banned:
|
|
12527
|
-
suspended:
|
|
12495
|
+
verification_required: "Verification Required",
|
|
12496
|
+
shadow_banned: "Shadow Banned",
|
|
12497
|
+
healthy: "Healthy",
|
|
12498
|
+
banned: "Banned",
|
|
12499
|
+
suspended: "Suspended",
|
|
12528
12500
|
};
|
|
12529
12501
|
const bidderAccountProviderDisplayMap = {
|
|
12530
|
-
|
|
12531
|
-
|
|
12502
|
+
"lancer-provided": "Lancer Provided",
|
|
12503
|
+
"user-provided": "User Provided",
|
|
12532
12504
|
};
|
|
12533
12505
|
|
|
12534
12506
|
const creditDeductionAmountMap = {
|
|
@@ -12814,7 +12786,6 @@ exports.accountStatusOrder = accountStatusOrder;
|
|
|
12814
12786
|
exports.accountStatusSchema = accountStatusSchema;
|
|
12815
12787
|
exports.agencyBidPayloadSchema = agencyBidPayloadSchema;
|
|
12816
12788
|
exports.agencyBidProposalDataSchema = agencyBidProposalDataSchema;
|
|
12817
|
-
exports.agencyConfigSchema = agencyConfigSchema;
|
|
12818
12789
|
exports.agentStatusSchema = agentStatusSchema;
|
|
12819
12790
|
exports.aiConfigOldSchema = aiConfigOldSchema;
|
|
12820
12791
|
exports.aiConfigSchema = aiConfigSchema;
|
|
@@ -12844,12 +12815,10 @@ exports.campaignExpensesSchema = campaignExpensesSchema;
|
|
|
12844
12815
|
exports.campaignInsightsSchema = campaignInsightsSchema;
|
|
12845
12816
|
exports.campaignIntegrations = campaignIntegrations;
|
|
12846
12817
|
exports.campaignIntegrationsSchema = campaignIntegrationsSchema;
|
|
12847
|
-
exports.campaignJobCountSchema = campaignJobCountSchema;
|
|
12848
12818
|
exports.campaignSchema = campaignSchema;
|
|
12849
12819
|
exports.campaignStatusSchema = campaignStatusSchema;
|
|
12850
12820
|
exports.capitalize = capitalize;
|
|
12851
12821
|
exports.categoryEnum = categoryEnum;
|
|
12852
|
-
exports.chatMessageSchema = chatMessageSchema;
|
|
12853
12822
|
exports.clientIndustryEnum = clientIndustryEnum;
|
|
12854
12823
|
exports.clientInfoSchema = clientInfoSchema;
|
|
12855
12824
|
exports.clientReviewSchema = clientReviewSchema;
|
|
@@ -12858,7 +12827,6 @@ exports.commonQuestions = commonQuestions;
|
|
|
12858
12827
|
exports.countryMapping = countryMapping;
|
|
12859
12828
|
exports.createBidderAccountSchema = createBidderAccountSchema;
|
|
12860
12829
|
exports.createCampaignSchema = createCampaignSchema;
|
|
12861
|
-
exports.createLeadNoteSchema = createLeadNoteSchema;
|
|
12862
12830
|
exports.createScraperAccountSchema = createScraperAccountSchema;
|
|
12863
12831
|
exports.creditDeductionAmountMap = creditDeductionAmountMap;
|
|
12864
12832
|
exports.creditDeductionEventTypeEnum = creditDeductionEventTypeEnum;
|
|
@@ -12871,6 +12839,10 @@ exports.experienceLevelEnum = experienceLevelEnum;
|
|
|
12871
12839
|
exports.externalProxySchema = externalProxySchema;
|
|
12872
12840
|
exports.feedScrapeCompletedEventMetadata = feedScrapeCompletedEventMetadata;
|
|
12873
12841
|
exports.feedScrapeStartedEventMetadata = feedScrapeStartedEventMetadata;
|
|
12842
|
+
exports.filterOptionItemSchema = filterOptionItemSchema;
|
|
12843
|
+
exports.filterOptionsResponseSchema = filterOptionsResponseSchema;
|
|
12844
|
+
exports.findLeadsRequestSchema = findLeadsRequestSchema;
|
|
12845
|
+
exports.findLeadsResponseSchema = findLeadsResponseSchema;
|
|
12874
12846
|
exports.formatCurrency = formatCurrency;
|
|
12875
12847
|
exports.freelancerBidPayloadSchema = freelancerBidPayloadSchema;
|
|
12876
12848
|
exports.freelancerBidProposalDataSchema = freelancerBidProposalDataSchema;
|
|
@@ -12891,16 +12863,13 @@ exports.jobListingSchema = jobListingSchema;
|
|
|
12891
12863
|
exports.jobSkillsSchema = jobSkillsSchema;
|
|
12892
12864
|
exports.jobStatusOrder = jobStatusOrder;
|
|
12893
12865
|
exports.knowledgeBaseSchema = knowledgeBaseSchema;
|
|
12894
|
-
exports.leadNoteSchema = leadNoteSchema;
|
|
12895
12866
|
exports.leadResponseSchema = leadResponseSchema;
|
|
12896
12867
|
exports.leadSchema = leadSchema;
|
|
12897
|
-
exports.leadStatusDisplayMap = leadStatusDisplayMap;
|
|
12898
12868
|
exports.leadStatusSchema = leadStatusSchema;
|
|
12899
12869
|
exports.listingScrapedEventMetadata = listingScrapedEventMetadata;
|
|
12900
12870
|
exports.logEventSchema = logEventSchema;
|
|
12901
12871
|
exports.loginSchema = loginSchema;
|
|
12902
12872
|
exports.metadataSchema = metadataSchema;
|
|
12903
|
-
exports.newChatMessageSchema = newChatMessageSchema;
|
|
12904
12873
|
exports.notificationConfigSchema = notificationConfigSchema;
|
|
12905
12874
|
exports.nuxtStateJobSchema = nuxtStateJobSchema;
|
|
12906
12875
|
exports.organizationBillingSchema = organizationBillingSchema;
|
|
@@ -12949,8 +12918,6 @@ exports.tryCatch = tryCatch;
|
|
|
12949
12918
|
exports.updateBidderAccountSchema = updateBidderAccountSchema;
|
|
12950
12919
|
exports.updateCampaignIntegrationsSchema = updateCampaignIntegrationsSchema;
|
|
12951
12920
|
exports.updateCampaignSchema = updateCampaignSchema;
|
|
12952
|
-
exports.updateLeadNoteSchema = updateLeadNoteSchema;
|
|
12953
|
-
exports.updateLeadNotesOrderSchema = updateLeadNotesOrderSchema;
|
|
12954
12921
|
exports.updateScraperAccountSchema = updateScraperAccountSchema;
|
|
12955
12922
|
exports.upworkJobSchema = upworkJobSchema;
|
|
12956
12923
|
exports.upworkProfileSchema = upworkProfileSchema;
|