note:query

Description: Retrieve a single note by its ID or import_id.


Request Schema

{
  "payload": {
    "type": "note:query",
    "id": 123
  },
  "signature": "payload_ed25519_hex_signature",
  "source_public_key": "your_client_public_key"
}

Or using import_id:

{
  "payload": {
    "type": "note:query",
    "import_id": "NOTE-001"
  },
  "signature": "payload_ed25519_hex_signature",
  "source_public_key": "your_client_public_key"
}

Request Attributes

  • See global request attributes
  • payload.id - Integer - The note ID (optional if import_id is provided)
  • payload.import_id - String - The note’s import_id (optional if id is provided)

At least one of id or import_id must be provided.

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": "note:query",
    "resource": {
      "id": 123,
      "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.resource - Object - The requested note:
    • 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

Note Not Found

{
  "source_public_key": "community_public_key",
  "source_site": {
    "protocol": "https",
    "fqdn": "arkipel.localhost:3000"
  },
  "created_at": "2025-03-18T10:30:00Z",
  "signature": "...",
  "payload": {
    "type": "note:query"
  },
  "error": "Note not found for id: 999999 or import_id: ",
  "status": "not_found"
}

Missing Parameters

{
  "payload": {
    "type": "note:query"
  },
  "error": "Note not found for id:  or import_id: ",
  "status": "not_found"
}

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": "note:query",
    "resource": {
      "id": 456,
      "import_id": "NOTE-2024-045",
      "title": "Budget Review Q1 2026",
      "body_plain": "Key points:\n- Revenue up 15%\n- Expenses controlled\n- New hiring approved",
      "body_html": "<p>Key points:</p><ul><li>Revenue up 15%</li><li>Expenses controlled</li><li>New hiring approved</li></ul>",
      "commentable": {
        "type": "Household",
        "id": 789,
        "name": "Johnson Family",
        "import_id": "HH-012"
      },
      "created_at": "2025-03-10T14:30:00Z",
      "updated_at": "2025-03-10T14:30:00Z"
    }
  }
}

Usage Notes

  • This is an ephemeral query - no message is persisted to the database
  • Soft-deleted notes return a “not_found” error
  • Authentication can be via token, whitelist, or membership
  • The note is findable by either id or import_id
  • Both id and import_id are checked - the first matching note is returned

Back to top

Welcome to the Arkipel DevKit! This documentation will guide you through everything you need to build clients for Arkipel communities.

Contact: devkit@arkipel.co | Page URLs

Copyright © 2026 Arkipel. Distributed under an MIT license.