Mutations
Mutations allow for modifying data within the Worksome API.
acceptBid
Type: Hire!
Hire a worker for a job by accepting their bid.
Only companies can make hires. The worker must have submitted a bid on the job before this mutation can be used.
Once a hire is created, a draft contract is automatically generated (Hire.latestContract) and is pending acceptance from the other party (usually the worker).
| Arguments |
|---|
inputAcceptBidInput! |
actionApprovalApprovable
Type: ApprovalApprovable
Take action on a pending approval request — approve, reject, or request changes.
The authenticated user must be a member of the approver’s user group and the approval request must be awaiting their action (viewerCanAction must be true).
| Arguments |
|---|
inputActionApprovalApprovableInput! |
approveEmploymentChanges
Type: Employment!
Mark an employment as updated.
| Arguments |
|---|
inputApproveEmploymentChangesInput! |
approveTrustedContact
Type: TrustedContact!
Approve a trusted contact.
Only companies can approve trusted contacts.
| Arguments |
|---|
inputApproveTrustedContactInput! |
attachJobsToProject
Type: Project!
Attach one or more jobs to a project.
Only companies can attach jobs to projects.
| Arguments |
|---|
inputAttachJobsToProjectInput! |
attachUsersToUserGroup
Type: UserGroup!
Attach one or more users to a group.
Only companies can attach users to groups.
| Arguments |
|---|
inputAttachUsersToUserGroupInput! |
attributeRecruiterToHire
Type: Hire!
Attribute a recruiter to a hire.
Only companies can attribute recruiters to their hires.
| Arguments |
|---|
inputAttributeRecruiterToHireInput! |
blockTrustedContact
Type: TrustedContact!
Block an applied trusted contact.
Only companies can block trusted contacts.
| Arguments |
|---|
inputBlockTrustedContactInput! |
cancelHire
Type: Hire!
Cancel a hire.
Only companies can cancel their hires.
| Arguments |
|---|
inputCancelHireInput! |
changeEmail
Type: User!
Change the email of the currently authenticated user.
| Arguments |
|---|
inputChangeEmailInput! |
createApproval
Type: Approval!
Create an approval flow.
Only companies can create approvals. An approval defines a review process that is automatically triggered when certain events occur (e.g. a hire is created or a contract changes). Once created, add approval rules to define the conditions and approvers for the flow.
| Arguments |
|---|
inputCreateApprovalInput! |
createApprovalRule
Type: ApprovalRule!
Add a rule to an approval flow.
A rule defines the conditions under which an approval is required. Each rule contains one or more variable conditions (e.g. “hourly rate > 100”) that are evaluated when the trigger event fires. After creating the rule, use createApprover to assign user groups who will review matching items.
| Arguments |
|---|
inputCreateApprovalRuleInput! |
createApprover
Type: Approver!
Assign a user group as an approver on an approval rule.
Approvers are processed in position order — position 1 is asked to approve first, then position 2, and so on. Each approver is a user group whose members can act on the approval request.
| Arguments |
|---|
inputCreateApproverInput! |
createBatch
Type: Batch
Create a new batch of items for processing.
| Arguments |
|---|
inputCreateBatchInput! |
createCompanyRecruiter
Type: CompanyRecruiter
Add and invite a new recruiter.
Only companies can add and invite recruiters.
| Arguments |
|---|
inputCreateCompanyRecruiterInput! |
createCustomField
Type: CustomField!
Create a custom field.
| Arguments |
|---|
inputCreateCustomFieldInput! |
createCustomTimesheet
Type: CreateCustomTimeSheetResponse!
Create a custom timesheet.
Use this endpoint to create timesheets in Worksome from a custom data format. The endpoint requires data in a custom format, as defined by the input schema.
| Arguments |
|---|
inputCreateCustomTimesheetInput! |
createDraftHire
Type: Hire!
Create a draft hire for a trusted contact.
Only companies can make hires. The worker must already be a trusted contact of the hiring company. A job is optional — if omitted, one will be created automatically from the provided details.
Draft hires must be completed in the Worksome UI before they become active, such as applicable compliance checks. The hire will start in DRAFT status and progress through the lifecycle once all required steps are finished.
| Arguments |
|---|
inputHireInput! |
createExport
Type: CreateExportResponse
Create an export.
The export URL and the number of rows will be returned (excluding headings).
| Arguments |
|---|
inputCreateExportInput! |
createJob
Type: Job!
Create a job with minimal required fields.
Only companies can create jobs. The job is created in DRAFT status with just a title, skills, and owner. Use updateJob to set the full details (description, rates, dates, location, etc.) and to publish the job.
| Arguments |
|---|
inputCreateJobInput! |
createJobCandidate
Type: [JobCandidate!]!
Create a job candidate.
This will make the workers eligible and proposed for a job.
| Arguments |
|---|
inputCreateJobCandidateInput! |
createJobShare
Type: [JobShare!]!
Create a job share.
| Arguments |
|---|
inputCreateJobShareInput! |
createMilestones
Type: [Milestone!]!
Create one or more milestones.
| Arguments |
|---|
inputCreateMilestonesInput! |
createNote
Type: Note!
Create a note.
| Arguments |
|---|
inputCreateNoteInput! |
createPassword
Type: User!
Create a password for the authenticated user.
This operation is only allowed if the user currently does not have a password for changing the password see updatePassword operation instead.
| Arguments |
|---|
inputCreatePasswordInput! |
createPaymentRequest
Type: PaymentRequest!
Create a payment request.
| Arguments |
|---|
inputCreatePaymentRequestInput! |
createProject
Type: Project!
Create a project.
Only companies can create projects.
| Arguments |
|---|
inputCreateProjectInput! |
createRecruiterCandidate
Type: RecruiterCandidate
Add and invite a new candidate.
Only recruiters can add and invite candidates.
| Arguments |
|---|
inputCreateRecruiterCandidateInput! |
createSmsMultiFactor
Type: SmsCreateMultiFactorPayload!
Create a new multi-factor authentication implementation.
| Arguments |
|---|
inputCreateSmsMultiFactorInput! |
createTimesheet
Type: Timesheet
Create a timesheet.
Only workers can create timesheets.
| Arguments |
|---|
inputCreateTimesheetInput! |
createTotpMultiFactor
Type: TotpCreateMultiFactorPayload!
Create a new multi-factor authentication implementation.
| Arguments |
|---|
inputCreateTotpMultiFactorInput! |
createTrustedContact
Type: TrustedContact!
Add and invite a new trusted contact.
Only companies can add & invite trusted contacts.
| Arguments |
|---|
inputCreateTrustedContactInput! |
createUserGroup
Type: UserGroup!
Create a user group.
Only companies can create user groups.
| Arguments |
|---|
inputCreateUserGroupInput! |
createWebhook
Type: Webhook!
Create a webhook.
Only companies can create webhooks.
| Arguments |
|---|
inputCreateWebhookInput! |
createWorkflow
Type: Workflow!
Create an approval workflow as a complete tree in a single operation.
Only companies can create workflows. This is the recommended way to set up an approval flow — it creates the approval (root), its rules (conditions), and approvers (user groups) all at once, rather than calling createApproval, createApprovalRule, and createApprover separately.
The input is structured as a tree: a root node (the approval definition), rule nodes (conditions), and approver nodes (user groups). Nodes reference each other via temporary id and parent/children fields.
| Arguments |
|---|
inputCreateWorkflowInput! |
deleteCompanyRecruiter
Type: CompanyRecruiter
Delete a recruiter relationship.
Both the company and the recruiter can delete the relationship.
| Arguments |
|---|
inputDeleteCompanyRecruiterInput! |
deleteCustomField
Type: CustomField!
Delete a custom field.
All fields details must be provided.
| Arguments |
|---|
inputDeleteCustomFieldInput! |
deleteMilestones
Type: [Milestone!]!
Delete one or more milestones.
| Arguments |
|---|
inputDeleteMilestonesInput! |
deleteNote
Type: Note!
Delete a note.
| Arguments |
|---|
inputDeleteNoteInput! |
deletePaymentRequest
Type: PaymentRequest!
Delete a payment request.
| Arguments |
|---|
inputDeletePaymentRequestInput! |
deleteProject
Type: Project!
Soft delete a project.
Only companies can delete projects.
| Arguments |
|---|
inputDeleteProjectInput! |
deleteRecruiterCandidate
Type: RecruiterCandidate
Delete a recruiter candidate relationship.
Both the recruiter and the candidate can delete the relationship.
| Arguments |
|---|
inputDeleteRecruiterCandidateInput! |
deleteTimesheet
Type: Timesheet!
Delete a timesheet.
Only workers can delete timesheets.
| Arguments |
|---|
inputDeleteTimesheetInput! |
deleteTimesheetRegistration
Type: TimesheetRegistration!
Delete a timesheet registration.
Only workers can delete timesheet registrations.
| Arguments |
|---|
inputDeleteTimesheetRegistrationInput! |
deleteTrustedContact
Type: TrustedContact
Delete a trusted contact.
Only companies can delete trusted contacts.
| Arguments |
|---|
inputDeleteTrustedContactInput! |
deleteUserGroup
Type: UserGroup!
Soft delete a user group.
Only companies can delete user groups.
| Arguments |
|---|
inputDeleteUserGroupInput! |
deleteWebhook
Type: Webhook!
Delete a webhook.
| Arguments |
|---|
inputDeleteWebhookInput! |
deleteWorkflow
Type: Workflow!
Delete an approval workflow.
Only companies can delete workflows. If the workflow has no existing approval requests, it is permanently removed along with its rules and approvers. If it has existing approval requests, the workflow is archived instead — its rules and approvers are preserved, but it will no longer evaluate new events.
| Arguments |
|---|
inputDeleteWorkflowInput! |
detachJobFromProject
Type: Project!
Detach a job from a project
Only companies can detach a job from a project.
| Arguments |
|---|
inputDetachJobFromProjectInput! |
detachUsersFromUserGroup
Type: UserGroup!
Detach one or more user from a group.
Only companies can detach users from a group.
| Arguments |
|---|
inputDetachUsersFromUserGroupInput! |
duplicateJob
Type: Job!
Duplicate a job.
Creates a copy of the job with all its details (description, skills, location, budget, etc.) Only companies can duplicate jobs.
| Arguments |
|---|
inputDuplicateJobInput! |
endJob
Type: Job!
End a job.
Only companies can end jobs.
| Arguments |
|---|
inputEndJobInput! |
endProject
Type: Project!
End a project.
This is used to set an end date on the project to consider it no longer active.
| Arguments |
|---|
inputEndProjectInput! |
forwardCandidate
Type: JobCandidate!
Present a candidate to a linked job with a specified rate.
| Arguments |
|---|
inputForwardCandidateInput! |
generateInviteLink
Type: Company!
Generate the company invite link token.
| Arguments |
|---|
inputGenerateInviteLinkInput! |
generatePersonalInviteLink
Type: String!
Generate or regenerate a personal invite link for the authenticated user.
This URL allows workers to join as trusted contacts with auto-approval. Only company members can generate personal invite links.
| Arguments |
|---|
inputGeneratePersonalInviteLinkInput! |
hire
Type: Hire!
Directly hire a trusted contact without requiring a bid.
Deprecated: use createDraftHire to create draft hires via the public API.
Only companies can make hires. The worker must already be a trusted contact of the hiring company. A job is optional — if omitted, one will be created automatically from the provided details.
| Arguments |
|---|
inputHireInput! |
inviteCompanyRecruiter
Type: CompanyRecruiter!
Invite an existing recruiter.
Only companies can invite the recruiter.
| Arguments |
|---|
inputInviteCompanyRecruiterInput! |
manageOnboardingDocuments
Type: Company
Manage Onboarding documents.
| Arguments |
|---|
inputManageOnboardingDocumentsInput! |
markFilesAsUploaded
Type: [File!]!
Mark one or more files as uploaded to the temporary URL.
| Arguments |
|---|
inputMarkFilesAsUploadedInput! |
onboardEmployment
Type: Employment!
Onboard an employment with optional employment costs.
| Arguments |
|---|
inputOnboardEmploymentInput! |
openProject
Type: Project!
Open a project.
This is used to set the end date on the project to null to make it open again.
| Arguments |
|---|
inputOpenProjectInput! |
reinviteTrustedContact
Type: TrustedContact!
Resend an invitation to a Trusted Contact that already exists in the Talent Pool.
This can be used for workers that has not responded to the initial invitation or for workers that was previously managed by a Staffing Agency.
| Arguments |
|---|
inputReinviteTrustedContactInput! |
rejectHire
Type: Hire!
Reject a hire.
| Arguments |
|---|
inputRejectHireInput! |
removeJobShare
Type: [JobShare!]!
Remove a job share.
| Arguments |
|---|
inputRemoveJobShareInput! |
removeMultiFactor
Type: MultiFactor
Remove a multi-factor authentication implementation.
| Arguments |
|---|
inputRemoveMultiFactorInput! |
removeOnboardingDocuments
Type: Company
Remove Onboarding documents.
| Arguments |
|---|
inputRemoveOnboardingDocumentsInput! |
removeRecruiterFromHire
Type: Hire!
Remove a recruiter from a hire.
Only companies can remove recruiters from their hires.
| Arguments |
|---|
inputRemoveRecruiterFromHireInput! |
retryWebhookEvent
Type: WebhookEvent!
Retry a webhook event.
Only companies can retry webhook events.
| Arguments |
|---|
inputRetryWebhookEventInput! |
runBatchAction
Type: RunBatchActionResponse!
Run an action on a batch.
| Arguments |
|---|
inputRunBatchActionInput! |
sendVerificationEmail
Type: User!
Sends a new verification email.
This operation is only allowed if the user has not verified their email.
setInternalBudgetOnJob
Type: Job!
Set the internal budget of a job.
Only companies can set the internal budget on the job.
| Arguments |
|---|
inputSetInternalBudgetOnJobInput! |
shareCandidatesWithPartner
Type: [JobCandidate!]!
[Experimental] Share candidates with the linked partner account.
| Arguments |
|---|
inputShareCandidatesWithPartnerInput! |
shareHire
Type: Hire!
Share a hire offer with a worker.
Only companies can share hires with workers.
| Arguments |
|---|
inputShareHireInput! |
storeBankDetails
Type: BankDetail!
Update the bank account details.
| Arguments |
|---|
inputStoreBankDetailsInput! |
terminateHire
Type: Hire!
Terminate a hire.
| Arguments |
|---|
inputTerminateHireInput! |
updateApproval
Type: Approval!
Update an approval flow.
Updating an approval creates a new version. Only companies that own the approval can update it.
| Arguments |
|---|
inputUpdateApprovalInput! |
updateApprover
Type: Approver!
Update an approver’s user group or position in the approval sequence.
| Arguments |
|---|
inputUpdateApproverInput! |
updateCompanyRecruiter
Type: CompanyRecruiter
Update a recruiter relationship.
Only companies can edit recruiter relationships.
| Arguments |
|---|
inputUpdateCompanyRecruiterInput! |
updateCustomField
Type: CustomField!
Update a custom field.
All fields must be provided.
| Arguments |
|---|
inputUpdateCustomFieldInput! |
updateJob
Type: Job!
Update a job’s details.
Only companies can update jobs. This is the follow-up to createJob — use it to set the full role details (description, rates, dates, location, visibility) and to publish the job when ready.
All fields are optional; only the fields you provide will be updated.
| Arguments |
|---|
inputUpdateJobInput! |
updateJobCandidatePreferred
Type: JobCandidate!
Update job candidates “preferred” status.
| Arguments |
|---|
inputUpdateJobCandidatePreferredInput! |
updateJobCandidateStatus
Type: JobCandidate!
Update a job candidate status.
A reason and comment can be provided.
| Arguments |
|---|
inputUpdateJobCandidateStatusInput! |
updateMilestones
Type: [Milestone!]!
Update one or more milestones.
| Arguments |
|---|
inputUpdateMilestonesInput! |
updateNote
Type: Note!
Update a note.
| Arguments |
|---|
inputUpdateNoteInput! |
updatePassword
Type: User!
Update a user’s password.
| Arguments |
|---|
inputUpdatePasswordInput! |
updatePaymentRequest
Type: PaymentRequest!
Update a payment request.
| Arguments |
|---|
inputUpdatePaymentRequestInput! |
updateProject
Type: Project!
Update a project.
Only companies can update projects.
| Arguments |
|---|
inputUpdateProjectInput! |
updateRecruiterCandidate
Type: RecruiterCandidate
Update a recruiter candidate information.
Only recruiters can edit the relationship.
| Arguments |
|---|
inputUpdateRecruiterCandidateInput! |
updateTimesheet
Type: Timesheet!
Update a timesheet.
Only workers can update timesheets.
| Arguments |
|---|
inputUpdateTimesheetInput! |
updateTimesheetRegistration
Type: TimesheetRegistration!
Update a timesheet registration.
Only workers can update timesheet registrations.
| Arguments |
|---|
inputUpdateTimesheetRegistrationInput! |
updateTrustedContact
Type: TrustedContact!
Update a trusted contact.
Only companies can edit trusted contacts.
| Arguments |
|---|
inputUpdateTrustedContactInput! |
updateUserGroup
Type: UserGroup!
Update a user group.
Only companies can update user groups.
| Arguments |
|---|
inputUpdateUserGroupInput! |
updateWebhook
Type: Webhook!
Update a webhook.
| Arguments |
|---|
inputUpdateWebhookInput! |
updateWorker
Type: Worker!
Update a worker.
| Arguments |
|---|
inputUpdateWorkerInput! |
updateWorkerCustomFieldValues
Type: UpdateWorkerCustomFieldValuesPayload!
Update custom field values for a fieldable entity as a worker.
Accepts a collection of field values in a single payload. Only fields with workerInputAllowed: true can be updated. Partial updates are supported - fields not included are ignored.
| Arguments |
|---|
inputUpdateWorkerCustomFieldValuesInput! |
updateWorkflow
Type: Workflow!
Update an existing approval workflow as a complete tree.
Only companies can update workflows. Replaces the entire workflow structure (root, rules, and approvers) with the provided tree. Creates a new version of the underlying approval.
| Arguments |
|---|
inputUpdateWorkflowInput! |
updateWorksomeIntelligenceConsent
Type: Boolean!
Update consent to use Worksome Intelligence for the current user.
| Arguments |
|---|
inputUpdateWorksomeIntelligenceConsentInput! |
uploadFiles
Type: [TemporaryFileUploadResponse!]!
Generate temporary upload URLs for files for the given account.
The temporary URL will expire after 1 week.
| Arguments |
|---|
input[UploadFileInput!]! |
verifySmsMultiFactor
Type: SmsMultiFactor
Verify a multi-factor authentication implementation.
| Arguments |
|---|
inputVerifySmsMultiFactorInput! |
verifyTotpMultiFactor
Type: TotpMultiFactor
Verify a TOTP multi-factor authentication implementation.
| Arguments |
|---|
inputVerifyTotpMultiFactorInput! |