mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-18 09:35:20 +02:00
3d8577a689
- For now, supports Markdown-it plugins - Also fixed slow rendering of notes in some cases - Simplified how Markdown-It plugins are created and cleaned MdToHtml code commit89576de289
Merge:c75aa21f
5292fc14
Author: Laurent Cozic <laurent@cozic.net> Date: Wed Oct 21 00:23:00 2020 +0100 Merge branch 'release-1.3' into plugin_content_scripts commitc75aa21ffd
Author: Laurent Cozic <laurent@cozic.net> Date: Wed Oct 21 00:19:52 2020 +0100 Fixed tests commit075187729d
Author: Laurent Cozic <laurent@cozic.net> Date: Wed Oct 21 00:11:53 2020 +0100 Fixed tests commit14696b8c65
Author: Laurent Cozic <laurent@cozic.net> Date: Tue Oct 20 23:27:58 2020 +0100 Fixed slow rendering of note commit61c09f5bf8
Author: Laurent Cozic <laurent@cozic.net> Date: Tue Oct 20 22:35:21 2020 +0100 Clean up commit9f7ea7d865
Author: Laurent Cozic <laurent@cozic.net> Date: Tue Oct 20 20:05:31 2020 +0100 Updated doc commit98bf3bde8d
Author: Laurent Cozic <laurent@cozic.net> Date: Tue Oct 20 19:56:34 2020 +0100 Finished converting plugins commitfe90d92e01
Author: Laurent Cozic <laurent@cozic.net> Date: Tue Oct 20 17:52:02 2020 +0100 Simplified how Markdown-It plugins are created commit47c7b864cb
Author: Laurent Cozic <laurent@cozic.net> Date: Mon Oct 19 16:40:11 2020 +0100 Clean up rules commitd927a238bb
Author: Laurent Cozic <laurent@cozic.net> Date: Mon Oct 19 14:29:40 2020 +0100 Fixed tests commit388a56c5dd
Author: Laurent Cozic <laurent@cozic.net> Date: Mon Oct 19 14:00:47 2020 +0100 Add support for content scripts
48 lines
2.8 KiB
TypeScript
48 lines
2.8 KiB
TypeScript
import { Path } from './types';
|
|
/**
|
|
* This module provides access to the Joplin data API: https://joplinapp.org/api/references/rest_api/
|
|
* This is the main way to retrieve data, such as notes, notebooks, tags, etc.
|
|
* or to update them or delete them.
|
|
*
|
|
* This is also what you would use to search notes, via the `search` endpoint.
|
|
*
|
|
* [View the demo plugin](https://github.com/laurent22/joplin/tree/dev/CliClient/tests/support/plugins/simple)
|
|
*
|
|
* In general you would use the methods in this class as if you were using a REST API. There are four methods that map to GET, POST, PUT and DELETE calls.
|
|
* And each method takes these parameters:
|
|
*
|
|
* * `path`: This is an array that represents the path to the resource in the form `["resouceName", "resourceId", "resourceLink"]` (eg. ["tags", ":id", "notes"]). The "resources" segment is the name of the resources you want to access (eg. "notes", "folders", etc.). If not followed by anything, it will refer to all the resources in that collection. The optional "resourceId" points to a particular resources within the collection. Finally, an optional "link" can be present, which links the resource to a collection of resources. This can be used in the API for example to retrieve all the notes associated with a tag.
|
|
* * `query`: (Optional) The query parameters. In a URL, this is the part after the question mark "?". In this case, it should be an object with key/value pairs.
|
|
* * `data`: (Optional) Applies to PUT and POST calls only. The request body contains the data you want to create or modify, for example the content of a note or folder.
|
|
* * `files`: (Optional) Used to create new resources and associate them with files.
|
|
*
|
|
* Please refer to the [Joplin API documentation](https://joplinapp.org/api/references/rest_api/) for complete details about each call. As the plugin runs within the Joplin application **you do not need an authorisation token** to use this API.
|
|
*
|
|
* For example:
|
|
*
|
|
* ```typescript
|
|
* // Get a note ID, title and body
|
|
* const noteId = 'some_note_id';
|
|
* const note = await joplin.data.get(['notes', noteId], { fields: ['id', 'title', 'body'] });
|
|
*
|
|
* // Get all folders
|
|
* const folders = await joplin.data.get(['folders']);
|
|
*
|
|
* // Set the note body
|
|
* await joplin.data.put(['notes', noteId], null, { body: "New note body" });
|
|
*
|
|
* // Create a new note under one of the folders
|
|
* await joplin.data.post(['notes'], null, { body: "my new note", title: "some title", parent_id: folders[0].id });
|
|
* ```
|
|
*/
|
|
export default class JoplinData {
|
|
private api_;
|
|
private pathSegmentRegex_;
|
|
private serializeApiBody;
|
|
private pathToString;
|
|
get(path: Path, query?: any): Promise<any>;
|
|
post(path: Path, query?: any, body?: any, files?: any[]): Promise<any>;
|
|
put(path: Path, query?: any, body?: any, files?: any[]): Promise<any>;
|
|
delete(path: Path, query?: any): Promise<any>;
|
|
}
|