nextcloud-notes/docs/api/v1.md

7.0 KiB

API version 1

In this document, the Notes API major version 1 and all its minor versions are described. An introduction with general information about versions, capabilities, compatibility between versions, authentication and input parameters can be found in the README.

Minor versions

API version Introduced with app version Remarkable Changes
1.0 Notes 3.3 (May 2020) Separate title, no auto rename based on content
1.1 Notes 3.4 (May 2020) Filter "Get all notes" by category

Note attributes

The app and the API is mainly about notes. So, let's have a look about the attributes of a note. The description of endpoints and operations will refer to this attribute definition.

Attribute Type Description since API version
id integer Every note has a unique identifier which is created by the server. It can be used to query and update a specific note. 1.0
content string Notes can contain arbitrary text. Formatting should be done using Markdown, but not every markup can be supported by every client. Therefore, markup should be used with care. 1.0
title string The note's title is also used as filename for the note's file. Therefore, some special characters are automatically removed and a sequential number is added if a note with the same title in the same category exists. When saving a title, the sanitized value is returned and should be adopted by your client. 1.0
category string Every note is assigned to a category. By default, the category is an empty string (not null), which means the note is uncategorized. Categories are mapped to folders in the file backend. Illegal characters are automatically removed and the respective folder is automatically created. Sub-categories (mapped to sub-folders) can be created by using / as delimiter. 1.0
favorite boolean If a note is marked as favorite, it is displayed at the top of the notes' list. Default is false. 1.0
modified integer Unix timestamp for the last modified date/time of the note. If not provided on note creation or content update, the current time is used. 1.0

Endpoints and Operations

The base URL for all calls is:

https://user:password@yournextcloud.com/index.php/apps/notes/api/v1/

All defined routes in the specification are appended to this url. To access all notes for instance use this url (here shown as curl command):

curl -u user:password https://yournextcloud.com/index.php/apps/notes/api/v1/notes

Get all notes (GET /notes)

Details

Request parameters

Parameter Type Description since API version
category string, optional Filter the result by category name, e.g. ?category=recipes. Notes with another category are not included in the result. Compatibility note: in API v1.0, this parameter is ignored; i.e., the result contains all notes regardless of this parameter. 1.1
exclude string, optional Fields which should be excluded from response, seperated with a comma e.g.: ?exclude=content,title. You can use this in order to reduce transferred data size if you are interested in specific attributes, only. 1.0
pruneBefore integer, optional All notes without change before of this Unix timestamp are purged from the response, i.e. only the attribute id is included. You should use the Unix timestamp value from the last request's HTTP response header Last-Modified in order to reduce transferred data size. 1.0
If-None-Match HTTP header, optional Use this in order to reduce transferred data size (see HTTP ETag). You should use the value from the last request's HTTP response header ETag. 1.0

Response

200 OK
[
    {
        "id": 76,
        "modified": 1376753464,
        "title": "New note",
        "category": "sub-directory",
        "content": "New note\n and something more",
        "favorite": false
    }, // etc
]
401 Unauthorized

No valid authentication credentials supplied.

Get single note (GET /notes/{id})

Details

Request parameters

Parameter Type Description
id integer, required (path) ID of the note to query.

Response

200 OK
{
    "id": 76,
    "modified": 1376753464,
    "title": "New note",
    "category": "sub-directory",
    "content": "New note\n and something more",
    "favorite": false
}
400 Bad Request

Invalid ID supplied.

401 Unauthorized

No valid authentication credentials supplied.

404 Not Found

Note not found.

Create note (POST /notes)

Details

Request parameters

  • Body: See section Note attributes (except for id). All attributes are optional. Example:
{
    "title": "New note",
    "category": "Category/Sub Category",
    "content": "New note\n and something more",
}

Response

200 OK
400 Bad Request

Invalid ID supplied.

401 Unauthorized

No valid authentication credentials supplied.

507 Insufficient Storage

Not enough free storage for saving the note's content.

Update note (PUT /notes/{id})

Details

Request parameters

Parameter Type Description
id integer, required (path) ID of the note to update.

Response

200 OK
400 Bad Request

Invalid ID supplied.

401 Unauthorized

No valid authentication credentials supplied.

404 Not Found

Note not found.

507 Insufficient Storage

Not enough free storage for saving the note's content.

Delete note (DELETE /notes/{id})

Details

Request parameters

Parameter Type Description
id integer, required (path) ID of the note to delete.

Response

200 OK

Note is deleted.

400 Bad Request

Invalid ID supplied.

401 Unauthorized

No valid authentication credentials supplied.

404 Not Found

Note not found.