Open Morse

Reference

Action lists

4 routes, generated from Morse’s own OpenAPI document. Every path below hangs off the base URL, and every one needs the bearer header.

The examples are built from each route’s schema, so the shapes and types are exactly what the API declares. The values are illustrative, and no one has run them.

Everything still open across every meeting whose notes you may read.

GET/meetings/my-actions

Declared on a router included before meetings, so this literal path is matched before /{meeting_id} can read "my-actions" as a meeting id. One summary read per meeting, which is why TODO_MEETINGS bounds it: the per-meeting list is built from the notes as *this* reader is given them (figures masked or not), and there is no cheaper honest way to ask. A reader's own copy wins over the shared list, exactly as it does on the meeting's own page — the two must agree, or ticking something here would leave it ticked in one place and open in the other. Only what is open: a to-do list is what is left to do. Everything else is still on the meeting.

GET/meetings/my-actions

curl "$MORSE/meetings/my-actions" \
  -H "Authorization: Bearer $MORSE_TOKEN"
200
{
  "items": [
    {
      "cites": [
        {}
      ],
      "done": true,
      "due": "…",
      "id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
      "meeting_at": "2026-10-02T10:30:00+05:30",
      "meeting_id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
      "meeting_people": [
        "…"
      ],
      "meeting_title": "…",
      "owner": "…",
      "text": "Annual plans are billed up front."
    }
  ],
  "more": true
}

Your copy of a meeting's to-do list, or the shared one until you change it.

GET/meetings/{meeting_id}/my-actions

For anyone who may read the notes.

GET/meetings/{meeting_id}/my-actions

curl "$MORSE/meetings/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/my-actions" \
  -H "Authorization: Bearer $MORSE_TOKEN"
200
{
  "base_version": "…",
  "items": [
    {
      "cites": [
        {}
      ],
      "done": true,
      "due": "…",
      "id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
      "owner": "…",
      "text": "Annual plans are billed up front."
    }
  ],
  "personal": true,
  "shared_changed": true,
  "shared_version": "…"
}

Replace this reader's copy. Ticks and edits alike come through here; the list is small, and a whole-list write cannot leave half an edit behind.

PUT/meetings/{meeting_id}/my-actions

The version stored is the one the client's list came from, never the shared list's current one: a tick on a copy of an older list must stay flagged, or it would clear the notice while the old items stayed.

PUT/meetings/{meeting_id}/my-actions

curl -X PUT "$MORSE/meetings/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/my-actions" \
  -H "Authorization: Bearer $MORSE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "base_version": "…", "items": [ { "id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60", "text": "Annual plans are billed up front." } ] }'
200
{
  "base_version": "…",
  "items": [
    {
      "cites": [
        {}
      ],
      "done": true,
      "due": "…",
      "id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
      "owner": "…",
      "text": "Annual plans are billed up front."
    }
  ],
  "personal": true,
  "shared_changed": true,
  "shared_version": "…"
}

Go back to the shared list.

DELETE/meetings/{meeting_id}/my-actions

The reader's ticks and edits are discarded.

DELETE/meetings/{meeting_id}/my-actions

curl -X DELETE "$MORSE/meetings/3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60/my-actions" \
  -H "Authorization: Bearer $MORSE_TOKEN"
200
{
  "base_version": "…",
  "items": [
    {
      "cites": [
        {}
      ],
      "done": true,
      "due": "…",
      "id": "3f9c1a24-5e6f-4b31-9a77-1b2c3d4e5f60",
      "owner": "…",
      "text": "Annual plans are billed up front."
    }
  ],
  "personal": true,
  "shared_changed": true,
  "shared_version": "…"
}