import {z} from 'zod' export type GetApiV2ProvidersEmployersConceptemployeesConceptEmployeeIdArgs = {conceptEmployeeId: string, Authorization: string, Accept: string}; export type GetApiV2ProvidersEmployersConceptemployeesConceptEmployeeIdOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; export const version = z.object({obsoleteDate: z.string().nullable().optional(), resourceVersion: z.string().optional()}); export const messageWarning = z.array(z.object({type: z.string().optional(), description: z.string().optional(), id: z.string().nullable().optional(), code: z.number().int().optional(), properties: z.array(z.string()).optional()})); export const id = z.string(); export const employee = z.object({employeeNumber: z.number().int().nullable().optional(), personalDetails: z.object({firstName: z.string().max(28).nullable().optional(), lastName: z.string().max(25).optional(), prefix: z.string().max(10).nullable().optional(), initials: z.string().max(6).nullable().optional(), formattedName: z.string().max(82).nullable().optional(), lastNamePartner: z.string().max(25).nullable().optional(), prefixPartner: z.string().max(10).nullable().optional(), dateOfBirth: z.string().nullable().optional(), placeOfBirth: z.string().max(24).nullable().optional(), howToFormatLastName: z.object({key: z.number().int().optional(), value: z.string().max(50).optional()}).nullable().optional(), title: z.object({key: z.number().int().optional(), value: z.string().max(50).optional()}).nullable().optional(), gender: z.object({key: z.number().int().optional(), value: z.string().max(50).optional()}).nullable().optional(), nationality: z.object({key: z.number().int().optional(), value: z.string().max(50).optional()}).nullable().optional(), civilStatus: z.object({key: z.number().int().optional(), value: z.string().max(50).optional()}).nullable().optional()}).optional(), contactInformation: z.object({phoneNumber: z.string().max(15).nullable().optional(), mobilePhoneNumber: z.string().max(15).nullable().optional(), faxNumber: z.string().max(15).nullable().optional(), emailAddress: z.string().max(255).nullable().optional()}).nullable().optional(), identityDocument: z.object({typeOfDocument: z.object({key: z.number().int().optional(), value: z.string().max(50).optional()}).nullable().optional(), documentIdentification: z.string().max(20).nullable().optional()}).nullable().optional(), address: z.object({street: z.string().max(24).nullable().optional(), city: z.string().max(24).nullable().optional(), houseNumber: z.number().int().nullable().optional(), houseNumberAddition: z.string().max(4).nullable().optional(), furtherIndication: z.object({key: z.number().int().optional(), value: z.string().optional()}).nullable().optional(), postalCode: z.string().max(9).nullable().optional(), location: z.string().max(35).nullable().optional(), country: z.object({key: z.number().int().optional(), value: z.string().max(50).optional(), isoCode: z.string().max(2).optional()}).nullable().optional()}).nullable().optional(), deviatingPostalAddress: z.object({street: z.string().max(24).nullable().optional(), city: z.string().max(24).nullable().optional(), houseNumber: z.number().int().nullable().optional(), houseNumberAddition: z.string().max(4).nullable().optional(), furtherIndication: z.object({key: z.number().int().optional(), value: z.string().optional()}).nullable().optional(), postalCode: z.string().max(9).nullable().optional(), location: z.string().max(35).nullable().optional(), country: z.object({key: z.number().int().optional(), value: z.string().max(50).optional(), isoCode: z.string().max(2).optional()}).nullable().optional()}).nullable().optional(), iban: z.string().max(35).nullable().optional()}); export const employment = z.object({startDate: z.string().nullable().optional(), historicalStartDate: z.string().nullable().optional(), payrollAdministration: z.object({id: z.string().optional(), name: z.string().max(70).optional(), clientNumber: z.number().int().optional(), description: z.string().max(50).optional()}).nullable().optional(), nonPayrollAdministration: z.object({id: z.string().optional(), name: z.string().max(70).nullable().optional(), description: z.string().max(50).optional()}).nullable().optional(), commissionUntilDate: z.string().nullable().optional(), incomeRelationshipNumber: z.number().int().gte(0).lte(9999).nullable().optional(), employeeProfileId: z.object({key: z.number().int().optional(), value: z.string().optional()}).nullable().optional(), employmentDurationType: z.object({key: z.number().int().optional(), value: z.string().optional()}).nullable().optional(), startDateContractOfIndefiniteDuration: z.string().nullable().optional(), employmentContractType: z.object({key: z.number().int().optional(), value: z.string().optional()}).nullable().optional(), typeOfEmployee: z.object({key: z.number().int().optional(), value: z.string().optional()}).nullable().optional(), cancellationPeriodEmployee: z.number().int().gte(1).lte(1000).nullable().optional(), cancellationPeriodEmployer: z.number().int().gte(1).lte(1000).nullable().optional(), cancellationPeriodTimeUnit: z.object({key: z.number().int().optional(), value: z.string().optional()}).nullable().optional(), cancellationNoticeDate: z.string().nullable().optional(), startCancellationNoticePeriod: z.string().nullable().optional(), isDirectorAndMajorShareholder: z.boolean().nullable().optional(), isOnCallEmployment: z.boolean().nullable().optional(), hasOnCallAppearanceObligation: z.boolean().nullable().optional(), vacationCoupons: z.object({key: z.number().int().optional(), value: z.string().optional()}).nullable().optional(), specialIncomeRatio: z.object({key: z.number().int().optional(), value: z.string().optional()}).nullable().optional(), isAnonymousEmployee: z.boolean().nullable().optional(), isPreviousOwner: z.boolean().nullable().optional(), isFamilyOfOwner: z.boolean().nullable().optional(), isGemoedsbezwaardNationalInsurance: z.boolean().nullable().optional(), isGemoedsbezwaardEmployeeInsurance: z.boolean().nullable().optional(), namePayslip: z.string().max(34).nullable().optional(), calculateWorkingHours: z.boolean().nullable().optional(), essMutationSet: z.object({key: z.number().int().optional(), value: z.string().optional()}).nullable().optional(), exemptionInsuranceObligation: z.object({key: z.number().int().optional(), value: z.string().optional()}).nullable().optional(), firstDayNotification: z.boolean().nullable().optional(), sendMdvNotification: z.boolean().nullable().optional(), periodPayGradeAdjustment: z.number().int().nullable().optional(), signalPayGradeAdjustment: z.boolean().nullable().optional(), typeOfParticipation: z.object({key: z.number().int().optional(), value: z.string().optional()}).nullable().optional(), valueOfParticipation: z.object({key: z.number().int().optional(), value: z.string().optional()}).nullable().optional(), professionCode: z.number().int().nullable().optional(), deviatingCLATaxReturn: z.number().int().nullable().optional(), participation55plusRegulationUWV: z.boolean().nullable().optional(), emailLeaveRequest: z.string().max(255).nullable().optional(), writtenEmploymentContract: z.boolean().nullable().optional()}).nullable(); export const workingHours = z.object({shift: z.object({shiftNumber: z.number().int().optional(), fullTimeHoursPerWeek: z.number().gte(0.01).lte(99).optional(), bonusPercentage: z.number().gte(0.01).lte(99).optional()}).nullable().optional(), deviatingHoursPerWeek: z.number().gte(0.01).lte(99).nullable().optional(), deviatingSvDaysPerPeriod: z.number().gte(1).lte(23).nullable().optional(), averageParttimeFactor: z.number().gte(0.0001).lte(999.9999).nullable().optional(), regularWorkPattern: z.boolean().nullable().optional(), flexibleHoursContract: z.object({key: z.number().int().optional(), value: z.string().max(50).optional()}).nullable().optional(), contractCode: z.object({key: z.string().optional(), code: z.number().int().optional(), description: z.string().optional()}).nullable().optional(), calculateUsingWorkPattern: z.object({leaveHours: z.boolean().nullable().optional(), hoursBrokenPeriod: z.boolean().nullable().optional(), hoursPeriod: z.boolean().nullable().optional(), daysDailyRate: z.boolean().nullable().optional(), deviatingDaysAndHours: z.boolean().nullable().optional()}).optional(), workPattern: z.object({oddWeeks: z.object({monday: z.number().gte(0).lte(24).optional(), tuesday: z.number().gte(0).lte(24).optional(), wednesday: z.number().gte(0).lte(24).optional(), thursday: z.number().gte(0).lte(24).optional(), friday: z.number().gte(0).lte(24).optional(), saturday: z.number().gte(0).lte(24).optional(), sunday: z.number().gte(0).lte(24).optional()}).optional(), evenWeeks: z.object({monday: z.number().gte(0).lte(24).optional(), tuesday: z.number().gte(0).lte(24).optional(), wednesday: z.number().gte(0).lte(24).optional(), thursday: z.number().gte(0).lte(24).optional(), friday: z.number().gte(0).lte(24).optional(), saturday: z.number().gte(0).lte(24).optional(), sunday: z.number().gte(0).lte(24).optional()}).optional()}).nullable().optional()}).nullable(); export const wage = z.object({grossWage: z.number().gte(1).lte(1000000).nullable().optional(), grossWageType: z.object({key: z.number().int().optional(), value: z.string().max(50).optional()}).nullable().optional(), netWage: z.number().gte(1).lte(1000000).nullable().optional(), netWageType: z.object({key: z.number().int().optional(), value: z.string().max(50).optional()}).nullable().optional(), payScale: z.object({key: z.number().int().optional(), value: z.string().max(50).optional()}).nullable().optional(), payGrade: z.object({key: z.number().int().optional(), value: z.string().max(50).optional()}).nullable().optional(), applyPayGrade: z.boolean().nullable().optional()}).nullable(); export const organizationalEntity = z.object({function: z.object({key: z.string().optional(), description: z.string().optional(), group: z.string().optional()}).nullable().optional(), deviatingFunctionGroup: z.string().nullable().optional(), deviatingFunctionDescription: z.string().nullable().optional(), standardFunction: z.object({key: z.number().int().optional(), value: z.string().optional(), code: z.string().min(1).max(6).nullable().optional(), category: z.number().int().nullable().optional()}).nullable().optional(), department: z.object({key: z.string().optional(), code: z.number().int().optional(), description: z.string().optional()}).nullable().optional(), distributionUnit: z.object({key: z.string().optional(), code: z.number().int().optional(), description: z.string().optional()}).nullable().optional(), placeOfEmployment: z.string().nullable().optional(), internalTelephoneExtensionNumber: z.string().nullable().optional()}).nullable(); export const socialSecurity = z.object({isInsuredForSicknessBenefitsAct: z.boolean().nullable().optional(), isInsuredForUnemploymentInsuranceAct: z.boolean().nullable().optional(), isInsuredForOccupationalDisabilityInsuranceAct: z.boolean().nullable().optional(), healthCareInsuranceActType: z.object({key: z.number().int().optional(), value: z.string().max(50).optional()}).nullable().optional()}).nullable(); export const fiscal = z.object({annualSalary: z.number().gte(0).lte(1000000000).nullable().optional(), deviatingPayrollTaxTableColour: z.object({key: z.number().int().optional(), value: z.string().max(50).optional()}).nullable().optional(), applyDayTables: z.boolean().nullable().optional(), deviatingPayrollTaxPercentage: z.number().nullable().optional(), applyDeviatingPayrollTaxPercentageOn: z.object({key: z.number().int().optional(), value: z.string().max(50).optional()}).optional(), applyPayrollTaxDeduction: z.boolean().nullable().optional(), applyStudentDeduction: z.boolean().nullable().optional(), deviatingCalculationRulePayrollTax: z.object({key: z.number().int().optional(), value: z.string().max(50).optional()}).nullable().optional(), residentOf: z.object({key: z.number().int().optional(), value: z.string().max(80).optional()}).nullable().optional()}).nullable(); export const otherPayrollVariables = z.object({deviatingPremiumGroup: z.object({key: z.number().int().optional(), value: z.string().max(50).optional()}).nullable().optional()}).nullable(); export const selfService = z.object({status: z.enum(["HasAccessToClient", "NoAccessToClient", "UserIsBlocked", "AccessToClientIsBlocked", "InvitePending", "InviteFailed", "InviteCancelled", "InviteExpired"]).max(50).optional(), clientName: z.string().optional()}); export const conceptEmployee20180101 = z.object({id: id.optional(), uniqueName: z.string().min(1).max(255).optional(), creationDate: z.string().optional(), employeeData: employee.optional(), employmentData: employment.optional(), workingHoursData: workingHours.optional(), wageData: wage.optional(), organizationalEntityData: organizationalEntity.optional(), socialSecurityData: socialSecurity.optional(), fiscalData: fiscal.optional(), otherPayrollVariablesData: otherPayrollVariables.optional(), selfService: selfService.optional(), conceptEmployeeStatus: z.enum(["HasAccessToClient", "NoAccessToClient", "UserIsBlocked", "AccessToClientIsBlocked", "InvitePending", "InviteFailed", "InviteCancelled", "InviteExpired", "Done"]).max(50).optional()}); export const getApiV2ProvidersEmployersConceptemployeesConceptEmployeeIdResponse = z.object({version: version.optional(), messages: messageWarning.optional(), content: conceptEmployee20180101.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 }; /** * Details of a concept employee * * GET /v2/providers/employers/conceptemployees/{conceptEmployeeId} */ export const getApiV2ProvidersEmployersConceptemployeesConceptEmployeeId = async (args: GetApiV2ProvidersEmployersConceptemployeesConceptEmployeeIdArgs, options?: GetApiV2ProvidersEmployersConceptemployeesConceptEmployeeIdOptions) => { const {baseUrl = "https://api.loket.nl", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json;version=2018-01-01") if (args.Authorization != null) headers.set("Authorization", String(args.Authorization)) if (args.Accept != null) headers.set("Accept", String(args.Accept)) const url = `${baseUrl.replace(/\/+$/, '')}/v2/providers/employers/conceptemployees/${encodeURIComponent(String(args.conceptEmployeeId))}${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(getApiV2ProvidersEmployersConceptemployeesConceptEmployeeIdResponse, await res.json()) };