notes:query
Description: Retrieve a list of notes for the authenticated account.
Request Schema
{
"payload": {
"type": "notes:query",
"q": {
"per_page": 25,
"page": 1,
"title_cont": "meeting",
"commentable_import_id_or_commentable_id": "P001"
}
},
"signature": "payload_ed25519_hex_signature",
"source_public_key": "your_client_public_key"
}
Request Attributes
- See global request attributes
- See search request attributes, and:
-
payload.q.title_cont- String - Records containing a given string in the note title -
payload.q.commentable_import_id_or_commentable_id- String/Integer - Find notes by subject’s import_id or id -
payload.q.page- Integer - Page number for pagination (default: 1) -
payload.q.per_page- Integer - Items per page (default: 20)
Authentication Behavior
This endpoint follows Pattern A: Full Account Access.
All authentication methods see the same data - no person filtering is applied.
Response Schema
{
"source_public_key": "community_public_key",
"source_site": {
"protocol": "https",
"fqdn": "arkipel.localhost:3000"
},
"created_at": "2025-03-18T10:30:00Z",
"signature": "8b6392d5550605bd6ccddf9c21ebec470de4b44e4b4deb746076e37ab61c5346e07e7c7c7cebb5bbee41cdd92a476bcd3f02373d146ec165b31c31fc31c9ce0d",
"payload": {
"type": "notes:query",
"q": {
"per_page": 25,
"page": 1,
"total": 10
},
"resources": [
{
"id": 1,
"import_id": "NOTE-001",
"title": "Meeting Notes",
"body_plain": "Discussion about project timeline...",
"body_html": "<p>Discussion about project timeline...</p>",
"commentable": {
"type": "Person",
"id": 789,
"name": "John Doe",
"import_id": "P001"
},
"created_at": "2025-03-17T09:00:00Z",
"updated_at": "2025-03-17T09:00:00Z"
}
]
}
}
Response Attributes
-
payload.q- Object - Query metadata including pagination info-
per_page- Integer - Items per page -
page- Integer - Current page number -
total- Integer - Total number of matching notes
-
-
payload.resources- Array of note objects:-
id- Integer - Unique identifier -
import_id- String - External reference ID (optional) -
title- String - Note title -
body_plain- String - Note content as plain text -
body_html- String - Note content as HTML -
commentable- Object - The subject this note is about-
type- String - Class name (Person, Organization, Household) -
id- Integer - Subject ID -
name- String - Display name of the subject -
import_id- String - Subject’s import ID (if available)
-
-
created_at- ISO 8601 timestamp - Creation time -
updated_at- ISO 8601 timestamp - Last update time
-
Error Responses
When an invalid query parameter is provided:
{
"source_public_key": "community_public_key",
"source_site": {
"protocol": "https",
"fqdn": "arkipel.localhost:3000"
},
"created_at": "2025-03-18T10:30:00Z",
"signature": "...",
"payload": {
"type": "notes:query",
"q": { "invalid_param" => "value" }
},
"error": "Error message",
"status": "bad_request"
}
Real Life Example
{
"source_public_key": "bwyexzko74pnnjn741936fnaujxyhib9rpx8rggtejwnc3cz6ans",
"source_site": {
"protocol": "https",
"fqdn": "arkipel.co"
},
"created_at": "2026-02-14T14:14:22Z",
"signature": "0b7cf3e421c4d7e4212e2069fbfbfd6734d0809fa3603e492949dc5b948da691f277c601d48b9cbac2bebbfdf697e8e01aa93ff54ae53afab4c5c2272dea0400",
"payload": {
"type": "notes:query",
"q": {
"per_page": 10,
"page": 1,
"total": 5,
"title_cont": "meeting"
},
"resources": [
{
"id": 123,
"import_id": "NOTE-2024-001",
"title": "Weekly Meeting Notes",
"body_plain": "Attendees: Sarah, Mike, John\n\nAgenda:\n1. Project status\n2. Budget review\n\nAction items:\n- Sarah to follow up on vendor contracts",
"body_html": "<p>Attendees: Sarah, Mike, John</p><p>Agenda:</p><ol><li>Project status</li><li>Budget review</li></ol><p>Action items:</p><ul><li>Sarah to follow up on vendor contracts</li></ul>",
"commentable": {
"type": "Organization",
"id": 456,
"name": "Community Garden Club",
"import_id": "ORG-001"
},
"created_at": "2025-03-15T10:00:00Z",
"updated_at": "2025-03-15T10:00:00Z"
}
]
}
}
Usage Notes
- This is an ephemeral query - no message is persisted to the database
- Notes are ordered by
created_at DESC(newest first) by default - Soft-deleted notes are automatically excluded from results
- Authentication can be via token, whitelist, or membership
- All notes in the account are accessible regardless of authentication method