import {z} from 'zod' export type GetApiApiV2CoreEmployeesProfileIdArgs = {Authorization: string, profileId: string, include?: string | undefined, exclude?: string | undefined, keyList?: string | undefined}; export type GetApiApiV2CoreEmployeesProfileIdOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; export const award = z.object({entity: z.string().nullable().optional(), date: z.string(), allText: z.string().nullable().optional(), skills: z.array(z.string()).nullable().optional(), description: z.string().nullable().optional(), title: z.string()}); export const experienceSchema = z.object({industry: z.string().nullable().optional(), endTime: z.number().int().nullable(), durationMonths: z.number().int().nullable().optional(), isInternal: z.boolean().nullable(), addlJson: z.object({}).nullable().optional(), department: z.string().nullable().optional(), work: z.string().nullable(), userVerifiedSkills: z.boolean().nullable().optional(), experienceKey: z.string().nullable().optional(), skills: z.array(z.string()).optional(), location: z.string().nullable(), startTime: z.number().int().nullable(), edited: z.boolean().nullable(), isCurrent: z.boolean().nullable(), description: z.string().nullable(), title: z.string().nullable()}); export const employeeEmploymentDate = z.object({date: z.string().nullable().optional(), type: z.enum(["original_hire", "continuous_service", "internal_transfer", "probation_end", "employment_confirmation", "last_working_day", "resignation"])}); export const employeeLanguageProficiency = z.object({read: z.string().nullable().optional(), speak: z.string().nullable().optional(), overall: z.string().nullable().optional(), language: z.string().nullable().optional(), write: z.string().nullable().optional()}); export const employeeExternalSystemId = z.object({type: z.enum(["paylocity", "greythr"]), value: z.string().nullable().optional()}); export const employeeMobility = z.object({comments: z.string().nullable().optional(), travelPercentageMin: z.number().nullable().optional(), relocationLocations: z.array(z.string()).nullable().optional(), relocation: z.string().nullable().optional(), travel: z.string().nullable().optional(), travelPercentageMax: z.number().nullable().optional()}); export const temporalFieldValue = z.object({endDate: z.number().int().nullable().optional(), createTs: z.number().int().nullable(), value: z.string().nullable(), startDate: z.number().int()}); export const temporalField = z.object({valueTimeline: z.array(temporalFieldValue), name: z.string()}); export const rmUserGroup = z.object({userGroupId: z.string().nullable().optional()}); export const additionalManager = z.object({capacityManagerEmail: z.string().nullable().optional(), employeeId: z.string().nullable().optional(), type: z.string().nullable().optional(), email: z.string().nullable().optional()}); export const employeeAssociatedRole = z.object({roleVariantId: z.string().nullable().optional(), roleVariantName: z.string().nullable().optional(), updateAt: z.number().int().nullable().optional(), primaryRoleId: z.string().nullable().optional(), externalVariantId: z.string().nullable().optional(), primaryRoleName: z.string().nullable().optional()}); export const photoContent = z.object({extension: z.string().nullable().optional(), content: z.string().nullable().optional(), isBase64: z.boolean().nullable().optional()}); export const employeeBadge = z.object({badgeId: z.string().nullable().optional(), userId: z.string().nullable().optional(), creator: z.string().nullable().optional(), photoUrl: z.string().nullable().optional(), lastModifiedTs: z.number().int().nullable().optional(), photoContent: photoContent.nullable().optional(), comment: z.string().nullable().optional(), title: z.string().nullable().optional()}); export const pay = z.object({frequency: z.string().nullable().optional(), amount: z.number().nullable().optional(), currency: z.string().nullable().optional()}); export const candidateEducation = z.object({verificationStatus: z.string().nullable().optional(), location: z.string().nullable(), school: z.string().nullable(), isCurrent: z.boolean().nullable().optional(), isGraduated: z.boolean().nullable().optional(), endTime: z.number().int().nullable(), awards: z.array(z.string()).nullable().optional(), source: z.string().nullable().optional(), degree: z.string().nullable(), startTime: z.number().int().nullable(), verificationBy: z.string().nullable().optional(), major: z.string().nullable(), majorExternalId: z.string().nullable().optional(), verificationTs: z.number().int().nullable().optional(), degreeExternalId: z.string().nullable().optional(), attachmentIds: z.array(z.string()).nullable().optional(), schoolExternalId: z.string().nullable().optional(), nameAlias: z.string().nullable().optional(), description: z.string().nullable()}); export const userGroup = z.object({userGroupId: z.string().nullable().optional()}); export const user = z.object({atsUserGroups: z.array(userGroup).nullable().optional(), name: z.string().nullable().optional(), atsRoles: z.array(z.string()).nullable().optional(), userId: z.string().nullable().optional(), firstName: z.string().nullable().optional(), lastName: z.string().nullable().optional(), email: z.string().nullable().optional()}); export const employeeSuccessor = z.object({employeeDetails: user.nullable().optional(), readiness: z.string().nullable().optional(), rank: z.number().int().nullable().optional(), comments: z.string().nullable().optional()}); export const employeeSuccessionPlanLinks = z.object({comments: z.string().nullable().optional(), successionPlanId: z.number().int().nullable().optional(), planName: z.string().nullable().optional(), successors: z.array(employeeSuccessor).nullable().optional(), successorInPlanIds: z.array(z.number().int()).nullable().optional(), planDate: z.string().nullable().optional()}); export const patent = z.object({date: z.string(), allText: z.string().nullable().optional(), skills: z.array(z.string()).nullable().optional(), description: z.string().nullable().optional(), title: z.string()}); export const certificateSchema = z.object({verificationStatus: z.string().nullable().optional(), country: z.string().nullable().optional(), skills: z.array(z.string()).nullable().optional(), comments: z.string().nullable().optional(), validFromDate: z.string().nullable().optional(), date: z.string().nullable().optional(), allText: z.array(z.string()).nullable().optional(), source: z.string().nullable().optional(), startDate: z.string().nullable().optional(), validToDate: z.string().nullable().optional(), certificateId: z.string().nullable().optional(), state: z.string().nullable().optional(), title: z.string().nullable(), endDate: z.string().nullable().optional(), verificationBy: z.string().nullable().optional(), externalKey: z.string().nullable().optional(), verificationTs: z.number().int().nullable().optional(), status: z.string().nullable().optional(), certificateType: z.string().nullable().optional(), proficiency: z.string().nullable().optional(), attachmentIds: z.array(z.string()).nullable().optional(), certificateExternalId: z.string().nullable().optional(), issuingAuthority: z.string().nullable().optional(), description: z.string().nullable().optional()}); export const skillAssessmentMetadata = z.object({last_manager_assessment_by: z.number().int().nullable().optional(), last_manager_assessment_ts: z.number().int().nullable().optional(), last_self_assessment_by: z.number().int().nullable().optional(), last_self_assessment_ts: z.number().int().nullable().optional()}); export const atsAttachmentApplicationMetadataSchema = z.object({applicationId: z.string()}); export const atsAttachmentSchema = z.object({isBase64: z.boolean().nullable().optional(), fileName: z.string(), lastModifiedTs: z.number().int().nullable().optional(), applicationMetadata: z.array(atsAttachmentApplicationMetadataSchema).nullable().optional(), attachmentContent: z.string().nullable(), attachmentId: z.string(), attachmentType: z.string().nullable()}); export const atsEducationSchema = z.object({endTs: z.number().int().nullable().optional(), verificationStatus: z.string().nullable().optional(), degreeExternalId: z.string().nullable().optional(), attachmentIds: z.array(z.string()).nullable().optional(), startTs: z.number().int().nullable(), degree: z.string().nullable(), major: z.string().nullable(), verificationBy: z.string().nullable().optional(), location: z.string().nullable(), isCurrent: z.boolean().nullable().optional(), schoolExternalId: z.string().nullable().optional(), majorExternalId: z.string().nullable().optional(), verificationTs: z.number().int().nullable().optional(), school: z.string().nullable(), nameAlias: z.string().nullable().optional(), isGraduated: z.boolean().nullable().optional(), description: z.string().nullable()}); export const lmsCourseAttendance = z.object({durationHours: z.number().nullable().optional(), percentageCompletion: z.number().nullable().optional(), isInternal: z.boolean().nullable().optional(), pointsEarned: z.number().nullable().optional(), courseType: z.string().nullable().optional(), difficulty: z.string().nullable().optional(), courseUrl: z.string().nullable().optional(), title: z.string().nullable().optional(), completionTs: z.number().int().nullable().optional(), lmsCourseId: z.string().nullable().optional(), medium: z.string().nullable().optional(), language: z.string().nullable().optional(), dueTs: z.number().int().nullable().optional(), assignedBy: z.string().nullable().optional(), status: z.string().nullable().optional(), startTs: z.number().int().nullable().optional(), isMandatory: z.boolean().nullable().optional(), provider: z.string().nullable().optional(), verified: z.string().nullable().optional(), description: z.string().nullable().optional()}); export const atsCertificationSchema = z.object({locationCountry: z.string().nullable().optional(), verificationStatus: z.string().nullable().optional(), licenseNo: z.string().nullable().optional(), skills: z.array(z.string()).nullable().optional(), validFromTs: z.number().int().nullable().optional(), comments: z.string().nullable().optional(), allText: z.string().nullable().optional(), endTs: z.number().int().nullable().optional(), verificationBy: z.string().nullable().optional(), certificateName: z.string().nullable(), verificationTs: z.number().int().nullable().optional(), status: z.string().nullable().optional(), certificateType: z.string().nullable().optional(), proficiency: z.string().nullable().optional(), validToTs: z.number().int().nullable().optional(), attachmentIds: z.array(z.string()).nullable().optional(), startTs: z.number().int().nullable().optional(), certificateExternalId: z.string().nullable().optional(), locationState: z.string().nullable().optional(), issuingAuthority: z.string().nullable().optional(), description: z.string().nullable().optional()}); export const atsContent = z.object({extension: z.string().nullable().optional(), content: z.string().nullable().optional(), isBase64: z.boolean().nullable().optional()}); export const jobs = z.object({atsJobId: z.string().nullable().optional(), name: z.string().nullable().optional()}); export const atsNoteSchema = z.object({subject: z.string().nullable().optional(), to: z.string().nullable().optional(), noteType: z.string().nullable().optional(), visibility: z.string().nullable().optional(), creator: z.string().nullable().optional(), cc: z.array(z.string()).nullable().optional(), body: z.string().nullable().optional(), sender: z.string().nullable().optional(), creationTs: z.number().int().nullable().optional()}); export const atsUser = z.object({userId: z.string().nullable().optional(), email: z.string().nullable().optional(), name: z.string().nullable().optional(), atsRoles: z.array(z.string()).nullable().optional()}); export const atsStage = z.object({stage: z.string().nullable().optional(), user: atsUser, reason: z.string().max(5000), wfSubStage: z.string(), wfStage: z.string(), stageTs: z.number().int()}); export const aTSScoreCardAttribute = z.object({rating: z.string().nullable().optional(), answer: z.string().nullable().optional(), note: z.string().nullable().optional(), question: z.string().nullable().optional(), rating_label: z.string().nullable().optional()}); export const atsScorecard = z.object({overallRatingLabel: z.string().nullable().optional(), overallRating: z.string().nullable().optional(), submittedBy: atsUser.nullable().optional(), submittedAt: z.number().int().nullable().optional(), interviewedAt: z.number().int().nullable().optional(), attributes: z.array(aTSScoreCardAttribute).nullable().optional(), description: z.string().nullable().optional(), interviewName: z.string().nullable().optional()}); export const atsQuestionAnswer = z.object({formName: z.string().nullable().optional(), choices: z.array(z.string()).nullable().optional(), explanation: z.string().nullable().optional(), answer: z.array(z.string()).nullable().optional(), formType: z.string().nullable().optional(), questionId: z.string(), displayOrder: z.string().nullable().optional(), formId: z.string().nullable().optional(), type: z.string().nullable().optional(), question: z.string().nullable().optional()}); export const atsApplicationSchema = z.object({locationCountry: z.string().nullable().optional(), reason: z.string().max(5000).nullable().optional(), location: z.string().nullable().optional(), visaStatuses: z.array(z.string()).nullable().optional(), veteranStatusStr: z.string().nullable().optional(), jobs: z.array(jobs).nullable().optional(), hiredTs: z.number().int().nullable().optional(), lastModifiedTs: z.number().int().nullable(), customInfo: z.object({}).nullable().optional(), note: atsNoteSchema.nullable().optional(), systemId: z.string().nullable().optional(), creditor: z.string().nullable().optional(), candidateId: z.string().nullable(), rejectedTs: z.number().int().nullable().optional(), veteranStatus: z.boolean().nullable().optional(), applicationTs: z.number().int().nullable(), pastStages: z.array(atsStage).nullable().optional(), sourceName: z.string().nullable().optional(), isProspect: z.boolean().nullable().optional(), scorecards: z.array(atsScorecard).nullable().optional(), jobSystemId: z.string().nullable().optional(), disabilityStatus: z.boolean().nullable().optional(), currentStage: atsStage.nullable().optional(), status: z.string().nullable().optional(), races: z.array(z.string()).nullable().optional(), sourceType: z.string().nullable().optional(), gender: z.string().nullable().optional(), questions: z.array(atsQuestionAnswer).nullable().optional(), rejectedBy: z.string().nullable().optional(), disabilityStatusStr: z.string().nullable().optional(), applicationId: z.string()}); export const atsExperienceSchema = z.object({endTs: z.number().int().nullable().optional(), industry: z.string().nullable().optional(), isInternal: z.boolean().nullable(), department: z.string().nullable().optional(), startTs: z.number().int().nullable(), location: z.string().nullable(), company: z.string().nullable(), isCurrent: z.boolean().nullable(), description: z.string().nullable().optional(), title: z.string().nullable()}); export const publication = z.object({date: z.string().nullable().optional(), skills: z.array(z.string()).nullable().optional(), publisher: z.string().nullable().optional(), description: z.string(), title: z.string().nullable().optional()}); export const atsProjectSchema = z.object({endTs: z.number().int().nullable().optional(), links: z.array(z.string()).nullable().optional(), startTs: z.number().int().nullable(), skills: z.array(z.string()).nullable().optional(), company: z.string().nullable(), contributors: z.array(z.string()).nullable().optional(), description: z.string().nullable().optional(), title: z.string().nullable()}); export const aTSSkillGroup = z.object({proficiency: z.string().nullable().optional(), skillGroup: z.string().nullable().optional()}); export const aTSSkillDetail = z.object({skillGroups: z.array(aTSSkillGroup).nullable().optional(), proficiency: z.string().nullable().optional(), evaluationTimestamp: z.number().int().nullable().optional(), dataSource: z.string().nullable().optional(), skill: z.string().nullable().optional()}); export const employeeCandidateData = z.object({locationCountry: z.string().nullable().optional(), skills: z.array(z.string()).nullable().optional(), location: z.string().nullable().optional(), address: z.string().nullable().optional(), attachments: z.array(atsAttachmentSchema).nullable().optional(), education: z.array(atsEducationSchema).nullable().optional(), awards: z.array(award).nullable().optional(), customInfo: z.object({}).nullable().optional(), courseAttendance: z.array(lmsCourseAttendance).nullable().optional(), candidateId: z.string().nullable().optional(), urls: z.array(z.string()).nullable().optional(), tags: z.array(z.string()).nullable().optional(), displayTags: z.array(z.string()).nullable().optional(), patents: z.array(patent).nullable().optional(), certifications: z.array(atsCertificationSchema).nullable().optional(), summary: z.string().nullable().optional(), photoContent: atsContent.nullable().optional(), applications: z.array(atsApplicationSchema).nullable().optional(), experience: z.array(atsExperienceSchema).nullable().optional(), races: z.array(z.string()).nullable().optional(), publications: z.array(publication).nullable().optional(), dateOfBirth: z.string().nullable().optional(), project: z.array(atsProjectSchema).nullable().optional(), gender: z.string().nullable().optional(), skillDetails: z.array(aTSSkillDetail).nullable().optional()}); export const employeeCriticality = z.object({riskOfLoss: z.string().nullable().optional(), impactOfLoss: z.string().nullable().optional()}); export const employeePerformanceRating = z.object({periodEndDate: z.string().nullable().optional(), rating: z.number().nullable().optional(), reviewedBy: user.nullable().optional(), ratingLabel: z.string().nullable().optional(), reviewComments: z.string().nullable().optional(), periodStartDate: z.string().nullable().optional(), reviewType: z.string().nullable().optional()}); export const projectFeedback = z.object({imageUrl: z.string().nullable(), rating: z.string().nullable(), name: z.string().nullable(), projectId: z.number().int().nullable(), timestamp: z.number().int().nullable(), profileId: z.number().int().nullable(), comment: z.string().nullable()}); export const project = z.object({addlJson: z.object({}).nullable().optional(), projectId: z.string(), duration: z.number().int(), links: z.array(z.string()).nullable().optional(), personal_description: z.string().nullable().optional(), skills: z.array(z.string()), time: z.string(), feedback: z.array(projectFeedback).nullable().optional(), company: z.string().nullable(), contributors: z.array(z.string()).nullable(), description: z.string().nullable().optional(), title: z.string()}); export const profileSkillEvaluation = z.object({skillSubGroup: z.string().nullable().optional(), level: z.number().nullable().optional(), proficiency: z.string().nullable().optional(), skillGroup: z.string().nullable().optional(), skillGroupDescription: z.string().nullable().optional(), source: z.string().nullable().optional(), skillCategoryDescription: z.string().nullable().optional(), assessmentProvider: z.string().nullable().optional(), skillCategory: z.string().nullable().optional()}); export const source1 = z.object({entityId: z.string().nullable().optional(), name: z.string().nullable().optional()}); export const profileSkillSchema = z.object({displayName: z.string().nullable().optional(), evaluations: z.array(profileSkillEvaluation).nullable().optional(), source: source1.nullable().optional(), name: z.string().nullable().optional()}); export const employeeResponseSchema = z.object({managerEmail: z.string().nullable().optional(), location: z.string().nullable().optional(), awards: z.array(award).nullable().optional(), experiences: z.array(experienceSchema).nullable().optional(), customInfo: z.object({}).nullable().optional(), employmentDates: z.array(employeeEmploymentDate).nullable().optional(), systemId: z.string().nullable().optional(), languages: z.array(employeeLanguageProficiency).nullable().optional(), pronouns: z.string().nullable().optional(), externalSystemIds: z.array(employeeExternalSystemId).nullable().optional(), terminationRegrettable: z.string().nullable().optional(), lastActivityTs: z.number().int().nullable().optional(), terminationTs: z.number().int().nullable().optional(), jobCode: z.string().nullable().optional(), timezone: z.string().nullable().optional(), preferredFirstName: z.string().nullable().optional(), role: z.string().nullable().optional(), workplaceModel: z.string().nullable().optional(), personalEmail: z.string().nullable().optional(), isContingent: z.boolean().nullable().optional(), mobility: employeeMobility.nullable().optional(), bu: z.string().nullable().optional(), temporalFields: z.array(temporalField).optional(), rmUserGroups: z.array(rmUserGroup).nullable().optional(), maritalStatus: z.string().nullable().optional(), externalJobId: z.string().nullable().optional(), additionalManagers: z.array(additionalManager).nullable().optional(), associatedRole: employeeAssociatedRole.nullable().optional(), demandExperiences: z.array(experienceSchema).nullable().optional(), companyName: z.string().nullable().optional(), phone: z.string().nullable().optional(), managerUserId: z.string().nullable().optional(), eligibleForTransfer: z.boolean().nullable().optional(), lastName: z.string().nullable().optional(), employeeType: z.string().nullable().optional(), middleName: z.string().nullable().optional(), employmentStatus: z.string().nullable().optional(), badges: z.array(employeeBadge).nullable().optional(), firstName: z.string().nullable().optional(), basePay: pay.nullable().optional(), education: z.array(candidateEducation).nullable().optional(), userId: z.string().nullable().optional(), businessEmail: z.string().nullable().optional(), lastReviewRating: z.string().nullable().optional(), employmentBasis: z.string().nullable().optional(), lastUpdatedTs: z.number().int().nullable().optional(), successionPlan: employeeSuccessionPlanLinks.nullable().optional(), patents: z.array(patent).nullable().optional(), bonus: pay.nullable().optional(), managerFullname: z.string().nullable().optional(), rehireEligibility: z.string().nullable().optional(), userHighlightedSkills: z.array(z.string()).nullable().optional(), certificates: z.array(certificateSchema).nullable().optional(), locationCountry: z.string().nullable().optional(), skillAssessmentMetadata: skillAssessmentMetadata.nullable().optional(), candidateData: employeeCandidateData.nullable().optional(), positionCriticality: z.array(z.string()).nullable().optional(), email: z.string(), level: z.string().nullable().optional(), terminationType: z.string().nullable().optional(), employeeId: z.string(), employeeCriticality: employeeCriticality.nullable().optional(), performanceRatings: z.array(employeePerformanceRating).nullable().optional(), title: z.string().nullable().optional(), id: z.string().nullable().optional(), citizenship: z.array(z.string()).nullable().optional(), preferredLastName: z.string().nullable().optional(), managerContactEmail: z.string().nullable().optional(), hiringTs: z.number().int().nullable().optional(), projects: z.array(project).nullable().optional(), roleChangeTs: z.number().int().nullable().optional(), publications: z.array(publication).nullable().optional(), shift: z.string().nullable().optional(), lob: z.string().nullable().optional(), skillDetails: z.array(profileSkillSchema).nullable().optional(), salutation: z.string().nullable().optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Get Employee * * GET /api/v2/core/employees/{profileId} */ export const getApiApiV2CoreEmployeesProfileId = async (args: GetApiApiV2CoreEmployeesProfileIdArgs, options?: GetApiApiV2CoreEmployeesProfileIdOptions) => { const {baseUrl = "https://apiv2.eightfold.ai", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.Authorization != null) headers.set("Authorization", String(args.Authorization)) if (args.include != null) query.append("include", String(args.include)) if (args.exclude != null) query.append("exclude", String(args.exclude)) if (args.keyList != null) query.append("keyList", String(args.keyList)) const url = `${baseUrl.replace(/\/+$/, '')}/api/v2/core/employees/${encodeURIComponent(String(args.profileId))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(employeeResponseSchema, await res.json()) };