lancer-shared 1.2.74 → 1.2.76

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.
Files changed (163) hide show
  1. package/dist/bundle.cjs.js +6 -0
  2. package/dist/constants/routes.d.ts +1 -0
  3. package/dist/schemas/campaign/campaign-analytics.d.ts +24 -24
  4. package/dist/schemas/logger/log-event.d.ts +11 -0
  5. package/dist/schemas/proxy/proxy-available-replacements.d.ts +1 -1
  6. package/package.json +1 -1
  7. package/dist/constants/collections.d.ts +0 -13
  8. package/dist/constants/collections.js +0 -14
  9. package/dist/constants/common-questions.js +0 -57
  10. package/dist/constants/index.js +0 -18
  11. package/dist/constants/job-filter-options.js +0 -265
  12. package/dist/constants/job-status.js +0 -21
  13. package/dist/constants/mappings/countryMapping.js +0 -120
  14. package/dist/constants/mappings/regionMapping.js +0 -240
  15. package/dist/constants/organization.d.ts +0 -2
  16. package/dist/constants/routes.js +0 -116
  17. package/dist/constants/upwork-accounts.js +0 -18
  18. package/dist/index.js +0 -4
  19. package/dist/schemas/account/account-status.js +0 -8
  20. package/dist/schemas/account/bidder-account.js +0 -35
  21. package/dist/schemas/account/index.js +0 -3
  22. package/dist/schemas/account/scraper-account.js +0 -34
  23. package/dist/schemas/ai/ai-config.d.ts +0 -36
  24. package/dist/schemas/ai/ai-config.js +0 -9
  25. package/dist/schemas/ai/index.d.ts +0 -3
  26. package/dist/schemas/ai/index.js +0 -3
  27. package/dist/schemas/ai/proposal.d.ts +0 -82
  28. package/dist/schemas/ai/proposal.js +0 -13
  29. package/dist/schemas/ai/suitability.d.ts +0 -37
  30. package/dist/schemas/ai/suitability.js +0 -14
  31. package/dist/schemas/bid/bid-result.js +0 -11
  32. package/dist/schemas/bid/bid.js +0 -35
  33. package/dist/schemas/bid/index.js +0 -2
  34. package/dist/schemas/campaign/campaign-ai-metrics.js +0 -6
  35. package/dist/schemas/campaign/campaign-analytics.js +0 -42
  36. package/dist/schemas/campaign/campaign-expenses.js +0 -6
  37. package/dist/schemas/campaign/campaign-insights.js +0 -31
  38. package/dist/schemas/campaign/campaign-integrations.d.ts +0 -87
  39. package/dist/schemas/campaign/campaign-integrations.js +0 -13
  40. package/dist/schemas/campaign/campaign-job-count.d.ts +0 -2
  41. package/dist/schemas/campaign/campaign-job-count.js +0 -3
  42. package/dist/schemas/campaign/campaign.js +0 -41
  43. package/dist/schemas/campaign/index.js +0 -7
  44. package/dist/schemas/chat-message/chat-message.d.ts +0 -31
  45. package/dist/schemas/chat-message/chat-message.js +0 -10
  46. package/dist/schemas/chat-message/index.d.ts +0 -1
  47. package/dist/schemas/chat-message/index.js +0 -1
  48. package/dist/schemas/config/agency-config.d.ts +0 -17
  49. package/dist/schemas/config/agency-config.js +0 -7
  50. package/dist/schemas/config/index.d.ts +0 -1
  51. package/dist/schemas/config/index.js +0 -1
  52. package/dist/schemas/event/index.d.ts +0 -58
  53. package/dist/schemas/index.js +0 -17
  54. package/dist/schemas/job-filters/index.d.ts +0 -1
  55. package/dist/schemas/job-filters/index.js +0 -1
  56. package/dist/schemas/job-filters/job-filters.d.ts +0 -241
  57. package/dist/schemas/job-filters/job-filters.js +0 -84
  58. package/dist/schemas/lead/index.js +0 -173
  59. package/dist/schemas/lead/lead-note.d.ts +0 -83
  60. package/dist/schemas/lead/lead-note.js +0 -27
  61. package/dist/schemas/lead/lead-status.js +0 -23
  62. package/dist/schemas/lead/nuxt.d.ts +0 -1664
  63. package/dist/schemas/lead/nuxt.js +0 -287
  64. package/dist/schemas/logger/index.js +0 -1
  65. package/dist/schemas/logger/log-event.js +0 -117
  66. package/dist/schemas/meter-event/index.d.ts +0 -12
  67. package/dist/schemas/organization/index.js +0 -70
  68. package/dist/schemas/organization/member.js +0 -7
  69. package/dist/schemas/organization/organization.d.ts +0 -240
  70. package/dist/schemas/organization/organization.js +0 -16
  71. package/dist/schemas/organization/subscription.js +0 -17
  72. package/dist/schemas/proxy/index.js +0 -3
  73. package/dist/schemas/proxy/proxy-available-replacements.js +0 -3
  74. package/dist/schemas/proxy/proxy-country.js +0 -249
  75. package/dist/schemas/proxy/proxy.js +0 -29
  76. package/dist/schemas/saved-search/index.js +0 -9
  77. package/dist/schemas/scraper/index.js +0 -2
  78. package/dist/schemas/scraper/scrape-payload.js +0 -21
  79. package/dist/schemas/scraper/scrape-result.js +0 -23
  80. package/dist/schemas/shared.js +0 -19
  81. package/dist/schemas/tier/index.d.ts +0 -119
  82. package/dist/schemas/time-filter/index.js +0 -6
  83. package/dist/schemas/transaction/index.js +0 -17
  84. package/dist/schemas/usage/index.js +0 -18
  85. package/dist/schemas/user/index.js +0 -52
  86. package/dist/types/account/account-status.d.ts +0 -3
  87. package/dist/types/account/account-status.js +0 -1
  88. package/dist/types/account/bidder-account.d.ts +0 -7
  89. package/dist/types/account/bidder-account.js +0 -1
  90. package/dist/types/account/index.d.ts +0 -3
  91. package/dist/types/account/index.js +0 -3
  92. package/dist/types/account/scraper-account.d.ts +0 -5
  93. package/dist/types/account/scraper-account.js +0 -1
  94. package/dist/types/ai/ai-config.d.ts +0 -6
  95. package/dist/types/ai/ai-config.js +0 -1
  96. package/dist/types/ai/index.d.ts +0 -3
  97. package/dist/types/ai/index.js +0 -3
  98. package/dist/types/ai/proposal.d.ts +0 -10
  99. package/dist/types/ai/proposal.js +0 -1
  100. package/dist/types/ai/suitability.d.ts +0 -6
  101. package/dist/types/ai/suitability.js +0 -1
  102. package/dist/types/bid/bid-result.d.ts +0 -5
  103. package/dist/types/bid/bid-result.js +0 -1
  104. package/dist/types/bid/bid.d.ts +0 -9
  105. package/dist/types/bid/bid.js +0 -1
  106. package/dist/types/bid/index.d.ts +0 -2
  107. package/dist/types/bid/index.js +0 -2
  108. package/dist/types/campaign/campaign-analytics.d.ts +0 -7
  109. package/dist/types/campaign/campaign-analytics.js +0 -1
  110. package/dist/types/campaign/campaign-expenses.d.ts +0 -3
  111. package/dist/types/campaign/campaign-expenses.js +0 -1
  112. package/dist/types/campaign/campaign-insights.js +0 -1
  113. package/dist/types/campaign/campaign-integrations.d.ts +0 -6
  114. package/dist/types/campaign/campaign-integrations.js +0 -1
  115. package/dist/types/campaign/campaign-job-count.d.ts +0 -4
  116. package/dist/types/campaign/campaign-job-count.js +0 -1
  117. package/dist/types/campaign/campaign.js +0 -1
  118. package/dist/types/campaign/index.js +0 -6
  119. package/dist/types/chat-message/chat-message.d.ts +0 -4
  120. package/dist/types/chat-message/chat-message.js +0 -1
  121. package/dist/types/chat-message/index.d.ts +0 -1
  122. package/dist/types/chat-message/index.js +0 -1
  123. package/dist/types/config/agency-config.d.ts +0 -4
  124. package/dist/types/config/agency-config.js +0 -1
  125. package/dist/types/config/index.d.ts +0 -1
  126. package/dist/types/config/index.js +0 -1
  127. package/dist/types/index.d.ts +0 -15
  128. package/dist/types/index.js +0 -15
  129. package/dist/types/job/index.d.ts +0 -48
  130. package/dist/types/job/index.js +0 -3
  131. package/dist/types/job/job-note.d.ts +0 -10
  132. package/dist/types/job/job-note.js +0 -1
  133. package/dist/types/job/job-status.d.ts +0 -5
  134. package/dist/types/job/job-status.js +0 -9
  135. package/dist/types/job/nuxt.d.ts +0 -4
  136. package/dist/types/job/nuxt.js +0 -1
  137. package/dist/types/job-filters/index.d.ts +0 -1
  138. package/dist/types/job-filters/index.js +0 -1
  139. package/dist/types/job-filters/job-filters.d.ts +0 -4
  140. package/dist/types/job-filters/job-filters.js +0 -1
  141. package/dist/types/logger/index.d.ts +0 -1
  142. package/dist/types/logger/index.js +0 -1
  143. package/dist/types/logger/log-event.js +0 -1
  144. package/dist/types/saved-search/index.d.ts +0 -6
  145. package/dist/types/saved-search/index.js +0 -1
  146. package/dist/types/scraper/index.d.ts +0 -2
  147. package/dist/types/scraper/index.js +0 -2
  148. package/dist/types/scraper/scrape-payload.d.ts +0 -10
  149. package/dist/types/scraper/scrape-payload.js +0 -1
  150. package/dist/types/scraper/scrape-result.d.ts +0 -8
  151. package/dist/types/scraper/scrape-result.js +0 -1
  152. package/dist/types/shared.d.ts +0 -8
  153. package/dist/types/shared.js +0 -1
  154. package/dist/types/time-filter/index.d.ts +0 -3
  155. package/dist/types/time-filter/index.js +0 -1
  156. package/dist/types/transaction/index.d.ts +0 -4
  157. package/dist/types/transaction/index.js +0 -1
  158. package/dist/types/usage/index.d.ts +0 -6
  159. package/dist/types/usage/index.js +0 -1
  160. package/dist/types/user/index.d.ts +0 -15
  161. package/dist/types/user/index.js +0 -1
  162. package/dist/utils/index.js +0 -1
  163. package/dist/utils/try-catch.js +0 -10
@@ -1,287 +0,0 @@
1
- import { any, array, boolean, number, object, record, string } from "zod";
2
- const segmentationDataSchema = object({
3
- customValue: string().nullable(),
4
- label: string(),
5
- name: string(),
6
- sortOrder: number(),
7
- type: string(),
8
- value: string(),
9
- skill: any().nullable(),
10
- });
11
- const clientActivitySchema = object({
12
- lastBuyerActivity: string(),
13
- totalApplicants: number(),
14
- totalHired: number(),
15
- totalInvitedToInterview: number(),
16
- unansweredInvites: number(),
17
- invitationsSent: number(),
18
- numberOfPositionsToHire: number(),
19
- });
20
- const annotationsSchema = object({
21
- tags: array(string()),
22
- });
23
- const budgetSchema = object({
24
- amount: number(),
25
- currencyCode: string(),
26
- });
27
- const engagementDurationSchema = object({
28
- label: string(),
29
- weeks: number(),
30
- });
31
- const extendedBudgetInfoSchema = object({
32
- hourlyBudgetMin: number().nullable(),
33
- hourlyBudgetMax: number().nullable(),
34
- hourlyBudgetType: string().nullable(),
35
- });
36
- const qualificationsSchema = object({
37
- countries: any().nullable(),
38
- earnings: any().nullable(),
39
- groupRecno: any().nullable(),
40
- languages: any().nullable(),
41
- localDescription: any().nullable(),
42
- localFlexibilityDescription: any().nullable(),
43
- localMarket: boolean(),
44
- minJobSuccessScore: number(),
45
- minOdeskHours: number(),
46
- onSiteType: any().nullable(),
47
- prefEnglishSkill: number(),
48
- regions: any().nullable(),
49
- risingTalent: boolean(),
50
- shouldHavePortfolio: boolean(),
51
- states: any().nullable(),
52
- tests: any().nullable(),
53
- timezones: any().nullable(),
54
- type: number(),
55
- locationCheckRequired: boolean(),
56
- group: any().nullable(),
57
- location: any().nullable(),
58
- locations: any().nullable(),
59
- });
60
- const jobSchema = object({
61
- status: number(),
62
- category: object({
63
- name: string(),
64
- urlSlug: string(),
65
- }),
66
- categoryGroup: object({
67
- name: string(),
68
- urlSlug: string(),
69
- }),
70
- budget: budgetSchema,
71
- postedOn: string(),
72
- publishTime: string(),
73
- wasRenewed: boolean(),
74
- startDate: string().nullable(),
75
- deliveryDate: string().nullable(),
76
- workload: string().nullable(),
77
- engagementDuration: engagementDurationSchema,
78
- extendedBudgetInfo: extendedBudgetInfoSchema,
79
- contractorTier: number(),
80
- description: string(),
81
- segmentationData: array(segmentationDataSchema),
82
- clientActivity: clientActivitySchema,
83
- annotations: annotationsSchema,
84
- uid: string(),
85
- title: string(),
86
- type: number(),
87
- ciphertext: string(),
88
- access: number(),
89
- createdOn: string(),
90
- hideBudget: boolean(),
91
- notSureProjectDuration: boolean(),
92
- notSureFreelancersToHire: boolean(),
93
- notSureExperienceLevel: boolean(),
94
- numberOfPositionsToHire: number(),
95
- isContractToHire: boolean(),
96
- attachments: array(any()),
97
- isPremium: boolean(),
98
- qualifications: qualificationsSchema,
99
- questions: array(object({ question: string(), position: number() })),
100
- durationIdV3: number(),
101
- durationLabel: string(),
102
- });
103
- const buyerSchema = object({
104
- isEnterprise: boolean(),
105
- isPaymentMethodVerified: boolean(),
106
- stats: object({
107
- totalAssignments: number(),
108
- activeAssignmentsCount: number(),
109
- hoursCount: number(),
110
- feedbackCount: number(),
111
- score: number(),
112
- totalJobsWithHires: number(),
113
- totalCharges: object({
114
- amount: number(),
115
- }),
116
- }),
117
- location: object({
118
- offsetFromUtcMillis: number(),
119
- countryTimezone: string(),
120
- city: string(),
121
- country: string(),
122
- }),
123
- company: object({
124
- isEDCReplicated: any().nullable(),
125
- contractDate: string(),
126
- profile: object({
127
- industry: string(),
128
- size: number(),
129
- }),
130
- name: string().nullable(),
131
- }),
132
- jobs: object({
133
- postedCount: number(),
134
- openCount: number(),
135
- }),
136
- avgHourlyJobsRate: object({
137
- amount: number(),
138
- }).nullable(),
139
- });
140
- const currentUserInfoSchema = object({
141
- owner: boolean(),
142
- freelancerInfo: object({
143
- profileState: string(),
144
- applied: any().nullable(),
145
- devProfileCiphertext: string(),
146
- hired: any().nullable(),
147
- application: record(any()),
148
- pendingInvite: record(any()),
149
- contract: any().nullable(),
150
- hourlyRate: object({
151
- amount: number(),
152
- }),
153
- qualificationsMatches: object({
154
- matches: array(object({
155
- clientPreferred: string(),
156
- clientPreferredLabel: string().nullable(),
157
- freelancerValue: string(),
158
- freelancerValueLabel: string(),
159
- qualification: number(),
160
- qualified: boolean(),
161
- })),
162
- }),
163
- }),
164
- });
165
- const workHistorySchema = array(object({
166
- isPtcJob: any().nullable(),
167
- status: any().nullable(),
168
- isEDCReplicated: any().nullable(),
169
- startDate: string(),
170
- endDate: string(),
171
- totalCharge: number(),
172
- totalHours: number(),
173
- jobInfo: object({
174
- title: string(),
175
- id: any().nullable(),
176
- uid: any().nullable(),
177
- access: number(),
178
- type: number(),
179
- ciphertext: any().nullable(),
180
- }),
181
- contractorInfo: object({
182
- contractorName: string(),
183
- accessType: string(),
184
- ciphertext: string(),
185
- }),
186
- rate: object({
187
- amount: number(),
188
- }).nullable(),
189
- feedback: object({
190
- feedbackSuppressed: boolean(),
191
- score: number(),
192
- comment: string(),
193
- feedback_suppressed: boolean(),
194
- }),
195
- feedbackToClient: object({
196
- feedbackSuppressed: boolean(),
197
- score: number(),
198
- comment: string(),
199
- feedback_suppressed: boolean(),
200
- }),
201
- isEDCPublic: boolean(),
202
- }));
203
- const sandsSchema = object({
204
- occupation: object({
205
- freeText: string().nullable(),
206
- ontologyId: string(),
207
- prefLabel: string(),
208
- id: string(),
209
- uid: string(),
210
- }),
211
- ontologySkills: array(any()),
212
- additionalSkills: array(object({
213
- uid: string(),
214
- name: string(),
215
- isFreeText: boolean(),
216
- })),
217
- });
218
- const connectsSchema = object({
219
- pricing: object({
220
- price: number(),
221
- context: string(),
222
- auctionPrice: number(),
223
- }),
224
- requiredConnects: number(),
225
- availableConnects: number(),
226
- chooseConnectsStatus: object({
227
- isExplainerModalShown: boolean().nullable(),
228
- }),
229
- canSeeApplicantsRates: boolean(),
230
- });
231
- const authSchema = object({
232
- canFlagOpening: boolean(),
233
- canPostJob: boolean(),
234
- domestic: object({
235
- country: string().nullable(),
236
- isInfographicTooltipAvailable: boolean(),
237
- }),
238
- });
239
- const applicationContextSchema = object({
240
- freelancerAllowed: boolean(),
241
- clientAllowed: boolean(),
242
- userIntentEvaluation: object({
243
- isDeclined: boolean(),
244
- reason: string().nullable(),
245
- }),
246
- canApplyOnBehalfOfAgencyFreelancers: boolean(),
247
- canSubmitMoreProposals: boolean(),
248
- submittedProposals: any().nullable(),
249
- });
250
- export const nuxtStateJobSchema = object({
251
- cache: boolean(),
252
- job: jobSchema,
253
- buyer: buyerSchema,
254
- currentUserInfo: currentUserInfoSchema,
255
- isVisitor: boolean(),
256
- openJobs: array(any()),
257
- workHistory: workHistorySchema,
258
- similarJobs: array(any()),
259
- sands: sandsSchema,
260
- auth: authSchema,
261
- applicants: object({
262
- applicantsBidsStats: any().nullable(),
263
- }),
264
- connects: connectsSchema.nullish(),
265
- enterpriseJobAdditionalInfo: record(any()),
266
- applicationContext: applicationContextSchema,
267
- profileMatchServiceUid: string(),
268
- seo: object({
269
- title: string(),
270
- description: string(),
271
- url: string(),
272
- }),
273
- teamUid: any().nullable(),
274
- proposalPermissions: object({
275
- freelancerAllowed: boolean(),
276
- clientAllowed: boolean(),
277
- }),
278
- jobSlug: any().nullable(),
279
- prefillWith: any().nullable(),
280
- isGroupOpportunity: boolean(),
281
- workLocation: any().nullable(),
282
- isPhoneVerified: boolean(),
283
- errorResponse: any().nullable(),
284
- isApplyBlocked: boolean(),
285
- hasAiInterview: boolean(),
286
- talentFeePromotion: boolean().nullish(),
287
- });
@@ -1 +0,0 @@
1
- export * from "./log-event";
@@ -1,117 +0,0 @@
1
- import { boolean, number, object, string, z } from 'zod';
2
- import { jobActivityOffsetHourSchema, jobActivitySchema, jobListingSchema, } from '../lead';
3
- import { regionSchema } from '../shared';
4
- export const LogEventTypeEnum = z.enum([
5
- // Scraper Events
6
- 'scraperStarted',
7
- 'scraperCompleted',
8
- 'jobScraped',
9
- 'jobScrapeFailed',
10
- 'jobsIndexed',
11
- 'jobDuplicateSkipped',
12
- 'scraperFailed',
13
- 'jobActivityScraped',
14
- 'jobActivityScrapeFailed',
15
- // Feed Scraper Events
16
- 'feedScrapeStarted',
17
- 'feedScrapeCompleted',
18
- 'feedScrapeFailed',
19
- 'jobListingScraped',
20
- // Job Sync & Campaign Matching
21
- 'jobSyncPublished',
22
- 'jobSyncReceived',
23
- 'leadsCreatedAndSynced',
24
- // Suitability Events
25
- 'suitabilityPending',
26
- 'suitabilityProcessing',
27
- 'suitabilityComplete',
28
- 'suitabilityFailed',
29
- 'manualSuitabilityAnalyzed',
30
- // Proposal Events
31
- 'proposalProcessing',
32
- 'proposalComplete',
33
- 'proposalFailed',
34
- 'manualProposalGenerated',
35
- // Bidding Events
36
- 'biddingProcessing',
37
- 'biddingComplete',
38
- 'biddingFailed',
39
- 'biddingSkipped',
40
- 'biddingPending',
41
- 'biddingRetry',
42
- 'biddingInsufficientConnects',
43
- 'biddingWarningAlert',
44
- // System/Generic Events
45
- 'errorLogged',
46
- 'cloudTaskRetry',
47
- 'manualLeadEdited',
48
- 'leadArchived',
49
- 'auditTrailLogged',
50
- // Knowledge Base Events
51
- 'knowledgeBaseGenerationComplete',
52
- 'knowledgeBaseGenerationFailed',
53
- // Model Chain Events
54
- 'modelFailed',
55
- ]);
56
- export const logEventSchema = z.object({
57
- // The type of event (use a z.enum if possible)
58
- type: LogEventTypeEnum, // e.g. "suitability-failed", "proposal-generated"
59
- // The service that triggered the event
60
- source: z.string(), // e.g. "lancer-agents", "lancer-bidding"
61
- // Optional: Allow logging non-lead events in the future
62
- resourceType: z.string().default('lead'), // e.g. "lead", "campaign", "user"
63
- // ID of the resource (primary entity affected)
64
- resourceId: z.string().nullable(), // fallback if leadId is not applicable
65
- // Lead-level metadata
66
- leadId: z.string().nullable(),
67
- campaignId: z.string().nullable(),
68
- userId: z.string().nullable(),
69
- // Reason or message for the event
70
- reason: z.string().nullable(),
71
- // Generic metadata (stacktrace, score, raw request, etc.)
72
- metadata: z.record(z.unknown()).nullable(),
73
- // Optional timestamp override
74
- timestamp: z.number(),
75
- });
76
- export const listingScrapedEventMetadata = object({
77
- listing: jobListingSchema,
78
- region: regionSchema,
79
- });
80
- export const jobActivityScrapedEventMetadata = object({
81
- activity: jobActivitySchema,
82
- region: regionSchema,
83
- offsetHour: jobActivityOffsetHourSchema,
84
- scrapedAt: number(),
85
- });
86
- export const jobActivityScrapeFailedEventMetadata = object({
87
- listing: jobListingSchema,
88
- region: regionSchema,
89
- offsetHour: jobActivityOffsetHourSchema,
90
- });
91
- export const feedScrapeStartedEventMetadata = object({
92
- id: string(),
93
- startTime: number(),
94
- region: regionSchema,
95
- });
96
- export const feedScrapeCompletedEventMetadata = object({
97
- id: string(),
98
- endTime: number(),
99
- region: regionSchema,
100
- accountUsername: string(),
101
- });
102
- export const biddingCompletedEventMetadata = object({
103
- biddingAmount: number(),
104
- boosted: boolean(),
105
- boostingAmount: number(),
106
- });
107
- export const biddingFailedEventMetadata = object({
108
- errorType: string(),
109
- errorMessage: string(),
110
- context: z.string().optional(),
111
- });
112
- export const biddingWarningAlertEventMetadata = object({
113
- warningMessage: string(),
114
- });
115
- export const biddingRetryEventMetadata = object({
116
- errorMessage: string(),
117
- });
@@ -1,12 +0,0 @@
1
- export declare const usageEventSchema: import("zod").ZodObject<{
2
- organizationId: import("zod").ZodString;
3
- eventId: any;
4
- }, "strip", import("zod").ZodTypeAny, {
5
- [x: string]: any;
6
- organizationId?: unknown;
7
- eventId?: unknown;
8
- }, {
9
- [x: string]: any;
10
- organizationId?: unknown;
11
- eventId?: unknown;
12
- }>;
@@ -1,70 +0,0 @@
1
- import { boolean, number, object, string, z } from "zod";
2
- import { LogEventTypeEnum } from "../logger";
3
- import { organizationSubscriptionSchema } from "./subscription";
4
- export const bidConfigSchema = object({
5
- agencyName: string().nullable(),
6
- bidderId: string().nullable(),
7
- contractorName: string().nullable(),
8
- specialisedProfile: string().nullable(),
9
- });
10
- export const organizationTypeSchema = z.enum(["agency", "freelancer"]);
11
- export const organizationTierEnum = z.enum(["free", "premium"]);
12
- export const organizationLimitsSchema = object({
13
- monthlyCredits: number(),
14
- usedCredits: number(),
15
- extraCredits: number(),
16
- });
17
- export const organizationBillingSchema = object({
18
- stripeCustomerId: string(),
19
- savedCard: boolean(),
20
- creditsRemaining: number(),
21
- });
22
- export const organizationSchema = object({
23
- id: string(),
24
- name: string(),
25
- type: organizationTypeSchema,
26
- tierId: organizationTierEnum,
27
- subscription: organizationSubscriptionSchema.nullable(),
28
- bidConfig: bidConfigSchema,
29
- active: boolean(),
30
- limits: organizationLimitsSchema,
31
- billing: organizationBillingSchema.nullable(),
32
- createdAt: number(),
33
- updatedAt: number(),
34
- });
35
- export const creditDeductionEventTypeEnum = LogEventTypeEnum.extract([
36
- "suitabilityComplete",
37
- "proposalComplete",
38
- ]);
39
- export const creditDeductionPayloadSchema = object({
40
- event: creditDeductionEventTypeEnum,
41
- campaignId: string().nullish(),
42
- });
43
- export const aiConfigOldSchema = object({
44
- id: string(),
45
- suitabilityPrompt: string().nullable(),
46
- proposalPrompt: string().nullable(),
47
- questionProposalPrompt: string().nullable(),
48
- knowledgeBase: string().nullable(),
49
- });
50
- export const aiConfigSchema = object({
51
- suitabilityRules: string().nullable(),
52
- coverLetterRules: string().nullable(),
53
- questionRules: string().nullable(),
54
- });
55
- export const knowledgeBaseSchema = object({
56
- about: string(),
57
- caseStudies: string(),
58
- });
59
- export const notificationConfigSchema = object({
60
- emailEnabled: boolean(),
61
- discordWebhookUrl: string().nullable(),
62
- slackWebhookUrl: string().nullable(),
63
- });
64
- export const organizationSettingsSchema = object({
65
- aiConfig: aiConfigSchema,
66
- knowledgeBase: knowledgeBaseSchema,
67
- notifications: notificationConfigSchema,
68
- });
69
- export * from "./member";
70
- export * from "./subscription";
@@ -1,7 +0,0 @@
1
- import { number, object, string, z } from "zod";
2
- export const organizationMemberRoleEnum = z.enum(["admin", "member"]);
3
- export const organizationMemberSchema = object({
4
- role: organizationMemberRoleEnum,
5
- joinedAt: number(),
6
- invitedBy: string(),
7
- });