Skip to main content

Desk

Extended module. Use withExtended. Comments, ToDo assignments, tags, and document share.

Every method accepts trailing RequestOptions. removeTag / unassign drop a reversible association. Destroying a document is db.deleteDoc.

import { createFrappeClient } from 'frappe-js-client'
import { withExtended } from 'frappe-js-client/extended'

const frappe = withExtended(createFrappeClient({ url }))

await frappe.desk.addComment({
referenceDoctype: 'ToDo',
referenceName: 'abc',
content: 'Looks good',
commentEmail: 'Administrator',
commentBy: 'Administrator',
})
await frappe.desk.updateComment('comment-name', 'Edited')
await frappe.desk.getComments('ToDo', 'abc')

await frappe.desk.assign({
doctype: 'ToDo',
name: 'abc',
assignTo: 'Administrator', // or string[]
description: 'Please review',
priority: 'High',
date: '2026-09-11',
assignedBy: 'Administrator',
assignmentRule: undefined,
})
await frappe.desk.assignMultiple({
doctype: 'ToDo',
names: ['abc', 'def'],
assignTo: ['a@x.com'],
})
await frappe.desk.closeAssignment('ToDo', 'abc', 'Administrator')
await frappe.desk.unassign('ToDo', 'abc', 'Administrator')

await frappe.desk.addTag('urgent', 'ToDo', 'abc', '#ff0000') // color is optional
await frappe.desk.getTags('ToDo', 'urg')
await frappe.desk.getTaggedDocs('ToDo', 'urgent')
await frappe.desk.removeTag('urgent', 'ToDo', 'abc')

await frappe.desk.share.add({
doctype: 'ToDo',
name: 'abc',
user: 'a@x.com',
read: true,
write: true,
submit: false,
share: false,
everyone: false,
notify: true,
})
await frappe.desk.share.setPermission({
doctype: 'ToDo',
name: 'abc',
user: 'a@x.com',
permissionTo: 'write',
value: 1,
everyone: false,
})
await frappe.desk.share.getUsers('ToDo', 'abc')

Comments

MethodReturnsNotes
addComment(args)CommentDocreferenceDoctype / referenceName / content / commentEmail / commentBy
updateComment(name, content)unknown
getComments(doctype, name)CommentDoc[]Newest first. Same list builder as db

Assignments

MethodReturnsNotes
assign(args)AssignmentRow[]assignTo is string or string[]
assignMultiple(args)unknownnames: string[] instead of name
unassign(doctype, name, assignTo)AssignmentRow[]
closeAssignment(doctype, name, assignTo)AssignmentRow[]

AssignArgs: doctype, name, assignTo, optional description, priority, date, assignedBy, assignmentRule. AssignmentRow is { owner, name }.

Tags

MethodReturnsNotes
addTag(tag, doctype, name, color?)stringColor optional
removeTag(tag, doctype, name)unknown
getTags(doctype, txt?)string[]txt defaults ''
getTaggedDocs(doctype, tag)unknown

Share (frappe.desk.share)

Share flags accept boolean | number. name on share args is string | number.

MethodReturnsDefaults
share.add(args)DocShareread: 1, write/submit/share/everyone/notify: 0
share.setPermission(args)DocShare | nullvalue: 1, everyone: 0. permissionTo is required
share.getUsers(doctype, name)DocShare[]