[
{
"namespace": "manifest",
"types": [
{
"$extend": "OptionalPermission",
"choices": [
{
"type": "string",
"enum": ["accountsFolders"]
}
]
}
]
},
{
"namespace": "folders",
"permissions": ["accountsRead"],
"types": [
{
"id": "MailFolder",
"type": "object",
"description": "An object describing a mail folder, as returned for example by the :ref:`folders.getParentFolders` or :ref:`folders.getSubFolders` methods, or part of a :ref:`accounts.MailAccount` object, which is returned for example by the :ref:`accounts.list` and :ref:`accounts.get` methods. The ``subFolders`` property is only included if requested.",
"properties": {
"accountId": {
"type": "string",
"description": "The account this folder belongs to."
},
"name": {
"type": "string",
"optional": true,
"description": "The human-friendly name of this folder."
},
"path": {
"type": "string",
"description": "Path to this folder in the account. Although paths look predictable, never guess a folder's path, as there are a number of reasons why it may not be what you think it is. Use :ref:`folders.getParentFolders` or :ref:`folders.getSubFolders` to obtain hierarchy information."
},
"subFolders": {
"type": "array",
"description": "Subfolders are only included if requested. They will be returned in the same order as used in Thunderbird's folder pane.",
"items": {
"$ref": "MailFolder"
},
"optional": true
},
"type": {
"type": "string",
"optional": true,
"description": "The type of folder, for several common types.",
"enum": [
"inbox",
"drafts",
"sent",
"trash",
"templates",
"archives",
"junk",
"outbox"
]
}
}
},
{
"id": "MailFolderInfo",
"type": "object",
"description": "An object containing additional information about a mail folder.",
"properties": {
"favorite": {
"type": "boolean",
"optional": true,
"description": "Whether this folder is a favorite folder."
},
"totalMessageCount": {
"type": "integer",
"optional": true,
"description": "Number of messages in this folder."
},
"unreadMessageCount": {
"type": "integer",
"optional": true,
"description": "Number of unread messages in this folder."
}
}
}
],
"functions": [
{
"name": "create",
"type": "function",
"permissions": ["accountsFolders"],
"description": "Creates a new subfolder in the specified folder or at the root of the specified account.",
"async": "callback",
"parameters": [
{
"name": "parent",
"choices": [
{
"$ref": "folders.MailFolder"
},
{
"$ref": "accounts.MailAccount"
}
]
},
{
"name": "childName",
"type": "string"
},
{
"type": "function",
"name": "callback",
"optional": true,
"parameters": [
{
"$ref": "folders.MailFolder"
}
]
}
]
},
{
"name": "rename",
"type": "function",
"permissions": ["accountsFolders"],
"description": "Renames a folder.",
"async": "callback",
"parameters": [
{
"name": "folder",
"$ref": "folders.MailFolder"
},
{
"name": "newName",
"type": "string"
},
{
"type": "function",
"name": "callback",
"optional": true,
"parameters": [
{
"$ref": "folders.MailFolder"
}
]
}
]
},
{
"name": "move",
"type": "function",
"permissions": ["accountsFolders"],
"description": "Moves the given ``sourceFolder`` into the given ``destination``. Throws if the destination already contains a folder with the name of the source folder.",
"async": "callback",
"parameters": [
{
"name": "sourceFolder",
"$ref": "folders.MailFolder"
},
{
"name": "destination",
"choices": [
{
"$ref": "folders.MailFolder"
},
{
"$ref": "accounts.MailAccount"
}
]
},
{
"type": "function",
"name": "callback",
"optional": true,
"parameters": [
{
"$ref": "folders.MailFolder"
}
]
}
]
},
{
"name": "copy",
"type": "function",
"permissions": ["accountsFolders"],
"description": "Copies the given ``sourceFolder`` into the given ``destination``. Throws if the destination already contains a folder with the name of the source folder.",
"async": "callback",
"parameters": [
{
"name": "sourceFolder",
"$ref": "folders.MailFolder"
},
{
"name": "destination",
"choices": [
{
"$ref": "folders.MailFolder"
},
{
"$ref": "accounts.MailAccount"
}
]
},
{
"type": "function",
"name": "callback",
"optional": true,
"parameters": [
{
"$ref": "folders.MailFolder"
}
]
}
]
},
{
"name": "delete",
"permissions": ["accountsFolders", "messagesDelete"],
"type": "function",
"description": "Deletes a folder.",
"async": true,
"parameters": [
{
"name": "folder",
"$ref": "folders.MailFolder"
}
]
},
{
"name": "getFolderInfo",
"type": "function",
"description": "Get additional information about a mail folder.",
"async": "callback",
"parameters": [
{
"name": "folder",
"$ref": "folders.MailFolder"
},
{
"type": "function",
"name": "callback",
"optional": true,
"parameters": [
{
"$ref": "folders.MailFolderInfo"
}
]
}
]
},
{
"name": "getParentFolders",
"type": "function",
"description": "Get all parent folders as a flat ordered array. The first array entry is the direct parent.",
"async": "callback",
"parameters": [
{
"name": "folder",
"$ref": "folders.MailFolder"
},
{
"name": "includeSubFolders",
"description": "Specifies whether the returned :ref:`folders.MailFolder` object for each parent folder should include its nested subfolders . Defaults to false.",
"optional": true,
"default": false,
"type": "boolean"
},
{
"type": "function",
"name": "callback",
"optional": true,
"parameters": [
{
"type": "array",
"items": {
"$ref": "folders.MailFolder"
}
}
]
}
]
},
{
"name": "getSubFolders",
"type": "function",
"description": "Get the subfolders of the specified folder or account.",
"async": "callback",
"parameters": [
{
"name": "folderOrAccount",
"choices": [
{
"$ref": "folders.MailFolder"
},
{
"$ref": "accounts.MailAccount"
}
]
},
{
"name": "includeSubFolders",
"description": "Specifies whether the returned :ref:`folders.MailFolder` object for each direct subfolder should also include all its nested subfolders . Defaults to true.",
"optional": true,
"default": true,
"type": "boolean"
},
{
"type": "function",
"name": "callback",
"optional": true,
"parameters": [
{
"type": "array",
"items": {
"$ref": "folders.MailFolder"
}
}
]
}
]
}
],
"events": [
{
"name": "onCreated",
"type": "function",
"description": "Fired when a folder has been created.",
"parameters": [
{
"name": "createdFolder",
"$ref": "folders.MailFolder"
}
]
},
{
"name": "onRenamed",
"type": "function",
"description": "Fired when a folder has been renamed.",
"parameters": [
{
"name": "originalFolder",
"$ref": "folders.MailFolder"
},
{
"name": "renamedFolder",
"$ref": "folders.MailFolder"
}
]
},
{
"name": "onMoved",
"type": "function",
"description": "Fired when a folder has been moved.",
"parameters": [
{
"name": "originalFolder",
"$ref": "folders.MailFolder"
},
{
"name": "movedFolder",
"$ref": "folders.MailFolder"
}
]
},
{
"name": "onCopied",
"type": "function",
"description": "Fired when a folder has been copied.",
"parameters": [
{
"name": "originalFolder",
"$ref": "folders.MailFolder"
},
{
"name": "copiedFolder",
"$ref": "folders.MailFolder"
}
]
},
{
"name": "onDeleted",
"type": "function",
"description": "Fired when a folder has been deleted.",
"parameters": [
{
"name": "deletedFolder",
"$ref": "folders.MailFolder"
}
]
},
{
"name": "onFolderInfoChanged",
"type": "function",
"description": "Fired when certain information of a folder have changed. Bursts of message count changes are collapsed to a single event.",
"parameters": [
{
"name": "folder",
"$ref": "folders.MailFolder"
},
{
"name": "folderInfo",
"$ref": "folders.MailFolderInfo"
}
]
}
]
}
]