Reference for Beebole GraphQL mutations: log time and expenses, submit and approve timesheets, and manage people, projects, tasks, and organization settings.
Mutations are the GraphQL write operations of the Beebole API. They create, update, archive, or delete data in your Beebole account — logging time and expenses, running the timesheet approval workflow, and managing people, projects, tasks, and organization settings. Send every mutation as a POST request to https://app.beebole.com/graphql with your key in the apikey HTTP header (see Introduction).Each mutation returns the affected object so you can read back fields in the same request. Object IDs are exposed as id (not _id). For read-only operations, see Queries.
Time durations in Beebole are expressed in milliseconds. To log 2 hours, pass 7200000 (2 × 60 × 60 × 1000), not 120.
An expense record is an actual expense logged against a person and/or a project. The amount is sent as value with an optional currency; if you omit the currency, Beebole uses the person’s or organization’s default.
The approval workflow runs through three mutations. There is no single “add approval event” call — submitting, approving, and rejecting are distinct operations that return a BeeboleApprovalEvent.
Mutation
Key arguments
submitTimesheet
personId, startTime, endTime
approveTimesheet
id (the submit event ID)
rejectTimesheet
id (the submit event ID), stage, comment
sendTimesheetReminder
personIds (array), startTime, endTime
Beebole determines the current approval stage automatically. submitTimesheet returns the submit event whose id you pass to approveTimesheet or rejectTimesheet.
Task categories and their workflow statuses are managed with the category mutations:
Mutation
Key arguments
addTaskCategoryStatus
categoryId, name
deleteTaskCategoryStatus
categoryId, statusId
editTaskCategoryStatusName
statusId, name
editTaskCategoryStatusColor
statusId, color
editTaskCategoryStatusMaxConcurrentTasks
statusId, maxConcurrentTasks
editCategoryTaskMove
categoryId, taskMove
To move a task between categories or statuses, use editTaskStatus (single task) or moveTasksToStatus (one or more tasks). editCategoryTaskMove sets a category’s task-move behavior.
Organization settings are edited on the single current organization, so these mutations take no id. The GraphQL field names keep the British spelling Organisation.
mutation { editOrganisationName(name: "Acme Corp") { id name }}
Mutations that delete data cannot be undone through the API. Where a check argument is available (deletePerson, deleteProject, deleteTask), pass check: true first to validate references without deleting anything.
When creating records, store the returned id values so you can reference or update them in follow-up mutations. Batch mutations such as archivePersons, deleteProjects, and deleteTimeRecords accept arrays — prefer them over looping single-item calls.