Board

14 operations. Every schema and example on this page is generated from the platform contract.

Recent board-wide activity feed (board_activity), newest first, capped.

Parameters

limitintegerqueryoptional

How many recent events to return (default 100, max 200).

Response, 200

activityarray of objectrequired
6 child fields
idnumberrequired
ticket_idstringrequired
actorstringrequired
verbstringrequired
detailstring, nullablerequired
created_atstringrequired
curl -G "https://www.membber.com/api/v1/board/activity" \
  -H "Authorization: Bearer $MEMBBER_TOKEN"
Response, 200
{
  "activity": [
    {
      "id": 1,
      "ticket_id": "fbc29b2e-0000-4000-8000-d0c5000000fb",
      "actor": "<actor>",
      "verb": "<verb>",
      "detail": "<detail>",
      "created_at": "<created_at>"
    }
  ]
}

The pick-next ranking: eligible unclaimed Todo items a thread could take.

Parameters

limitintegerqueryoptional

How many candidates to return (default 12, max 50).

Response, 200

candidatesarray of objectrequired
14 child fields
idstringrequired
titlestring, nullablerequired
typestringrequired
sectionstring, nullablerequired
epic_idstring, nullablerequired
priostringrequired
founder_ordnumber, nullablerequired
founder_rankedbooleanrequired
tierstringrequired

'founder-binding' when the founder has ranked it, else 'judgement'.

unblocks_countnumberrequired
age_daysnumber, nullablerequired
adjacent_to_inflightbooleanrequired
branchstring, nullablerequired
pr_numbernumber, nullablerequired
curl -G "https://www.membber.com/api/v1/board/candidates" \
  -H "Authorization: Bearer $MEMBBER_TOKEN"
Response, 200
{
  "candidates": [
    {
      "id": "00000d1b-0000-4000-8000-d0c500000000",
      "title": "Morning class",
      "type": "<type>",
      "section": "<section>",
      "epic_id": "a3ea3c95-0000-4000-8000-d0c5000000a3",
      "prio": "<prio>",
      "founder_ord": 1,
      "founder_ranked": true,
      "tier": "<tier>",
      "unblocks_count": 1,
      "age_days": 1,
      "adjacent_to_inflight": true,
      "branch": "<branch>",
      "pr_number": 1
    }
  ]
}

Atomically claim a candidate ticket (409 if the race was lost / it is ineligible).

Request body

idstringrequired

The ticket to claim.

sessionstringrequired

The claiming thread/session id (stamped on the row).

assigneestringrequired

Who is picking it up.

Response, 200

ticketobjectrequired
27 child fields
idstringrequired
sourcestringrequired
pr_numbernumber, nullablerequired
branchstring, nullablerequired
sectionstring, nullablerequired
colstring, nullablerequired

Resolved column: the founder override (founder_col) if set, else the synced col.

founder_colstring, nullablerequired

The founder column override, or null when the item is not founder-pinned.

pr_statestring, nullablerequired
typestringrequired

Resolved type: type_override if set, else the synced type.

priostringrequired

Resolved priority: prio_override if set, else the synced prio.

titlestring, nullablerequired

Resolved title: display_title ?? title ?? raw_title.

raw_titlestring, nullablerequired
summarystring, nullablerequired
whystring, nullablerequired
what_it_doesstring, nullablerequired
user_storystring, nullablerequired
epic_idstring, nullablerequired
when_tsstring, nullablerequired

ISO date (YYYY-MM-DD) the work landed / was raised.

content_sourcestring, nullablerequired
synced_atstringrequired

ISO timestamp of the last sync write.

assigneestring, nullablerequired
claimed_atstring, nullablerequired
session_idstring, nullablerequired
depends_onarray of stringrequired
labelsarray of stringrequired
notesstring, nullablerequired
founder_ordnumber, nullablerequired
curl -X POST "https://www.membber.com/api/v1/board/claim" \
  -H "Authorization: Bearer $MEMBBER_TOKEN" \
  -H "Idempotency-Key: 1f0e2d3c-4b5a-4678-9abc-def012345678" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "00000d1b-0000-4000-8000-d0c500000000",
    "session": "<session>",
    "assignee": "<assignee>"
  }'
Response, 200
{
  "ticket": {
    "id": "00000d1b-0000-4000-8000-d0c500000000",
    "source": "<source>",
    "pr_number": 1,
    "branch": "<branch>",
    "section": "<section>",
    "col": "<col>",
    "founder_col": "<founder_col>",
    "pr_state": "<pr_state>",
    "type": "<type>",
    "prio": "<prio>",
    "title": "Morning class",
    "raw_title": "<raw_title>",
    "summary": "<summary>",
    "why": "<why>",
    "what_it_does": "<what_it_does>",
    "user_story": "<user_story>",
    "epic_id": "a3ea3c95-0000-4000-8000-d0c5000000a3",
    "when_ts": "<when_ts>",
    "content_source": "<content_source>",
    "synced_at": "<synced_at>",
    "assignee": "<assignee>",
    "claimed_at": "<claimed_at>",
    "session_id": "630ddf64-0000-4000-8000-d0c500000063",
    "depends_on": [
      "<depends_on>"
    ],
    "labels": [
      "<label>"
    ],
    "notes": "Added at the front desk",
    "founder_ord": 1
  }
}

The operator inbox: questions/decisions/updates surfaced by any thread, untriaged first then newest first.

Response, 200

inboxarray of objectrequired
9 child fields
idstringrequired
titlestringrequired
bodystringrequired
section_hintstring, nullablerequired
priority_hintstring, nullablerequired
reopen_ofstring, nullablerequired

The ticket id this inbox item re-opens, or null for a fresh item.

statusstringrequired

'untriaged' or 'triaged'.

created_atstringrequired
triaged_atstring, nullablerequired
curl -G "https://www.membber.com/api/v1/board/inbox" \
  -H "Authorization: Bearer $MEMBBER_TOKEN"
Response, 200
{
  "inbox": [
    {
      "id": "00000d1b-0000-4000-8000-d0c500000000",
      "title": "Morning class",
      "body": "<body>",
      "section_hint": "<section_hint>",
      "priority_hint": "<priority_hint>",
      "reopen_of": "<reopen_of>",
      "status": "<status>",
      "created_at": "<created_at>",
      "triaged_at": "<triaged_at>"
    }
  ]
}

Triage an inbox item: assign section + priority and mark it triaged.

Parameters

idstringpathrequired

Request body

sectionstringrequired

The section to file this inbox item under.

prioritystringrequired

The priority to assign to this inbox item.

Response, 200

inbox_itemobjectrequired
9 child fields
idstringrequired
titlestringrequired
bodystringrequired
section_hintstring, nullablerequired
priority_hintstring, nullablerequired
reopen_ofstring, nullablerequired

The ticket id this inbox item re-opens, or null for a fresh item.

statusstringrequired

'untriaged' or 'triaged'.

created_atstringrequired
triaged_atstring, nullablerequired
curl -X POST "https://www.membber.com/api/v1/board/inbox/00000d1b-0000-4000-8000-d0c500000000/triage" \
  -H "Authorization: Bearer $MEMBBER_TOKEN" \
  -H "Idempotency-Key: 1f0e2d3c-4b5a-4678-9abc-def012345678" \
  -H "Content-Type: application/json" \
  -d '{
    "section": "<section>",
    "priority": "<priority>"
  }'
Response, 200
{
  "inbox_item": {
    "id": "00000d1b-0000-4000-8000-d0c500000000",
    "title": "Morning class",
    "body": "<body>",
    "section_hint": "<section_hint>",
    "priority_hint": "<priority_hint>",
    "reopen_of": "<reopen_of>",
    "status": "<status>",
    "created_at": "<created_at>",
    "triaged_at": "<triaged_at>"
  }
}

Sign in to the Membber HQ board with email + password.

Verifies the email/password against Supabase auth, then checks the founder allowlist. On success mints a short-lived operator token. A correct password for a non-allow-listed address is a refusal (403), not a login.

auth none, publicop boardLoginidempotent retryrate limitederrors

Request body

emailstringrequired

The operator email (verified against Supabase auth).

passwordstringrequired

The account password, verified against Supabase, never stored here.

Response, 200

tokenstringrequired

The operator bearer token to send as Authorization: Bearer on every board call.

mestringrequired

The verified, allow-listed operator email.

expiresAtstringrequired

ISO timestamp the token expires.

curl -X POST "https://www.membber.com/api/v1/board/session" \
  -H "Idempotency-Key: 1f0e2d3c-4b5a-4678-9abc-def012345678" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "alex@example.com",
    "password": "<password>"
  }'
Response, 200
{
  "token": "<token>",
  "me": "<me>",
  "expiresAt": "<expiresAt>"
}

Sign in to the Membber HQ board with Sign in with Apple.

Verifies the Apple identity token fully (RS256 signature against Apple's JWKS, issuer, audience com.membber.hq, expiry), then checks the founder allowlist on the verified email. A missing / relay / non-allow-listed email is a 403 that echoes the email + Apple subject it saw, so the founder can add it. On success mints the same operator token.

auth none, publicop boardLoginAppleidempotent retryrate limitederrors

Request body

identityTokenstringrequired

The Sign in with Apple identity token (JWT) returned to the app.

Response, 200

tokenstringrequired

The operator bearer token to send as Authorization: Bearer on every board call.

mestringrequired

The verified, allow-listed operator email.

expiresAtstringrequired

ISO timestamp the token expires.

curl -X POST "https://www.membber.com/api/v1/board/session/apple" \
  -H "Idempotency-Key: 1f0e2d3c-4b5a-4678-9abc-def012345678" \
  -H "Content-Type: application/json" \
  -d '{
    "identityToken": "<identityToken>"
  }'
Response, 200
{
  "token": "<token>",
  "me": "<me>",
  "expiresAt": "<expiresAt>"
}

Sign in to the Membber HQ board with Google.

Verifies the Google ID token fully (RS256 signature against Google's JWKS via jwks-rsa, issuer accounts.google.com, audience the Membber Google client id, expiry) using the SAME production verifier the App Clip customer Google sign-in uses, src/lib/auth/googleAuth.ts verifyGoogleIdToken. Then checks the founder allowlist on the verified email. A missing / unverified / non-allow-listed email is a 403 that echoes the email + Google subject it saw, so the founder can add it. On success mints the same operator token.

auth none, publicop boardLoginGoogleidempotent retryrate limitederrors

Request body

credentialstringrequired

The Google ID token (JWT) returned to the app.

Response, 200

tokenstringrequired

The operator bearer token to send as Authorization: Bearer on every board call.

mestringrequired

The verified, allow-listed operator email.

expiresAtstringrequired

ISO timestamp the token expires.

curl -X POST "https://www.membber.com/api/v1/board/session/google" \
  -H "Idempotency-Key: 1f0e2d3c-4b5a-4678-9abc-def012345678" \
  -H "Content-Type: application/json" \
  -d '{
    "credential": "<credential>"
  }'
Response, 200
{
  "token": "<token>",
  "me": "<me>",
  "expiresAt": "<expiresAt>"
}

List board tickets (filterable + keyset-paginated), founder overlay resolved.

Parameters

colstringqueryoptional

Filter to a resolved column (e.g. todo, doing, review, done, blocked).

typestringqueryoptional

Filter to a resolved type (bug, feature, task).

sectionstringqueryoptional

Filter to a section (payments, verticals, business, customer, platform).

qstringqueryoptional

Free-text match against title, raw title, why, id, branch and assignee.

limitintegerqueryoptional

Page size (default 50, max 200).

cursorstringqueryoptional

Opaque keyset cursor from a previous page.

Response, 200

ticketsarray of objectrequired
27 child fields
idstringrequired
sourcestringrequired
pr_numbernumber, nullablerequired
branchstring, nullablerequired
sectionstring, nullablerequired
colstring, nullablerequired

Resolved column: the founder override (founder_col) if set, else the synced col.

founder_colstring, nullablerequired

The founder column override, or null when the item is not founder-pinned.

pr_statestring, nullablerequired
typestringrequired

Resolved type: type_override if set, else the synced type.

priostringrequired

Resolved priority: prio_override if set, else the synced prio.

titlestring, nullablerequired

Resolved title: display_title ?? title ?? raw_title.

raw_titlestring, nullablerequired
summarystring, nullablerequired
whystring, nullablerequired
what_it_doesstring, nullablerequired
user_storystring, nullablerequired
epic_idstring, nullablerequired
when_tsstring, nullablerequired

ISO date (YYYY-MM-DD) the work landed / was raised.

content_sourcestring, nullablerequired
synced_atstringrequired

ISO timestamp of the last sync write.

assigneestring, nullablerequired
claimed_atstring, nullablerequired
session_idstring, nullablerequired
depends_onarray of stringrequired
labelsarray of stringrequired
notesstring, nullablerequired
founder_ordnumber, nullablerequired
next_cursorstring, nullablerequired

Cursor for the next page, or null when the list is exhausted.

curl -G "https://www.membber.com/api/v1/board/tickets" \
  -H "Authorization: Bearer $MEMBBER_TOKEN"
Response, 200
{
  "tickets": [
    {
      "id": "00000d1b-0000-4000-8000-d0c500000000",
      "source": "<source>",
      "pr_number": 1,
      "branch": "<branch>",
      "section": "<section>",
      "col": "<col>",
      "founder_col": "<founder_col>",
      "pr_state": "<pr_state>",
      "type": "<type>",
      "prio": "<prio>",
      "title": "Morning class",
      "raw_title": "<raw_title>",
      "summary": "<summary>",
      "why": "<why>",
      "what_it_does": "<what_it_does>",
      "user_story": "<user_story>",
      "epic_id": "a3ea3c95-0000-4000-8000-d0c5000000a3",
      "when_ts": "<when_ts>",
      "content_source": "<content_source>",
      "synced_at": "<synced_at>",
      "assignee": "<assignee>",
      "claimed_at": "<claimed_at>",
      "session_id": "630ddf64-0000-4000-8000-d0c500000063",
      "depends_on": [
        "<depends_on>"
      ],
      "labels": [
        "<label>"
      ],
      "notes": "Added at the front desk",
      "founder_ord": 1
    }
  ],
  "next_cursor": "<next_cursor>"
}

Get one board ticket with its comments and activity.

Parameters

idstringpathrequired

Response, 200

ticketobjectrequired
27 child fields
idstringrequired
sourcestringrequired
pr_numbernumber, nullablerequired
branchstring, nullablerequired
sectionstring, nullablerequired
colstring, nullablerequired

Resolved column: the founder override (founder_col) if set, else the synced col.

founder_colstring, nullablerequired

The founder column override, or null when the item is not founder-pinned.

pr_statestring, nullablerequired
typestringrequired

Resolved type: type_override if set, else the synced type.

priostringrequired

Resolved priority: prio_override if set, else the synced prio.

titlestring, nullablerequired

Resolved title: display_title ?? title ?? raw_title.

raw_titlestring, nullablerequired
summarystring, nullablerequired
whystring, nullablerequired
what_it_doesstring, nullablerequired
user_storystring, nullablerequired
epic_idstring, nullablerequired
when_tsstring, nullablerequired

ISO date (YYYY-MM-DD) the work landed / was raised.

content_sourcestring, nullablerequired
synced_atstringrequired

ISO timestamp of the last sync write.

assigneestring, nullablerequired
claimed_atstring, nullablerequired
session_idstring, nullablerequired
depends_onarray of stringrequired
labelsarray of stringrequired
notesstring, nullablerequired
founder_ordnumber, nullablerequired
commentsarray of objectrequired
6 child fields
idstringrequired
ticket_idstringrequired
authorstringrequired
bodystringrequired
mediaarray of objectrequired

Pre-denormalised media stored on the comment (may be empty).

created_atstringrequired
activityarray of objectrequired
6 child fields
idnumberrequired
ticket_idstringrequired
actorstringrequired
verbstringrequired
detailstring, nullablerequired
created_atstringrequired
curl -G "https://www.membber.com/api/v1/board/tickets/00000d1b-0000-4000-8000-d0c500000000" \
  -H "Authorization: Bearer $MEMBBER_TOKEN"
Response, 200
{
  "ticket": {
    "id": "00000d1b-0000-4000-8000-d0c500000000",
    "source": "<source>",
    "pr_number": 1,
    "branch": "<branch>",
    "section": "<section>",
    "col": "<col>",
    "founder_col": "<founder_col>",
    "pr_state": "<pr_state>",
    "type": "<type>",
    "prio": "<prio>",
    "title": "Morning class",
    "raw_title": "<raw_title>",
    "summary": "<summary>",
    "why": "<why>",
    "what_it_does": "<what_it_does>",
    "user_story": "<user_story>",
    "epic_id": "a3ea3c95-0000-4000-8000-d0c5000000a3",
    "when_ts": "<when_ts>",
    "content_source": "<content_source>",
    "synced_at": "<synced_at>",
    "assignee": "<assignee>",
    "claimed_at": "<claimed_at>",
    "session_id": "630ddf64-0000-4000-8000-d0c500000063",
    "depends_on": [
      "<depends_on>"
    ],
    "labels": [
      "<label>"
    ],
    "notes": "Added at the front desk",
    "founder_ord": 1
  },
  "comments": [
    {
      "id": "00000d1b-0000-4000-8000-d0c500000000",
      "ticket_id": "fbc29b2e-0000-4000-8000-d0c5000000fb",
      "author": "<author>",
      "body": "<body>",
      "media": [
        {}
      ],
      "created_at": "<created_at>"
    }
  ],
  "activity": [
    {
      "id": 1,
      "ticket_id": "fbc29b2e-0000-4000-8000-d0c5000000fb",
      "actor": "<actor>",
      "verb": "<verb>",
      "detail": "<detail>",
      "created_at": "<created_at>"
    }
  ]
}

Edit a ticket via the founder overlay (title, notes, type, priority, epic, labels).

Parameters

idstringpathrequired

Request body

overlayobjectrequired

Partial overlay patch: a key PRESENT sets it (null clears the override), a key ABSENT is left untouched.

6 child fields
display_titlestring, nullableoptional

Founder title override; null clears it.

notesstring, nullableoptional
type_overridestring, nullableoptional
prio_overridestring, nullableoptional
epic_idstring, nullableoptional
labelsarray of stringoptional

Full label set; null or omitted leaves it untouched.

Response, 200

ticketobjectrequired
27 child fields
idstringrequired
sourcestringrequired
pr_numbernumber, nullablerequired
branchstring, nullablerequired
sectionstring, nullablerequired
colstring, nullablerequired

Resolved column: the founder override (founder_col) if set, else the synced col.

founder_colstring, nullablerequired

The founder column override, or null when the item is not founder-pinned.

pr_statestring, nullablerequired
typestringrequired

Resolved type: type_override if set, else the synced type.

priostringrequired

Resolved priority: prio_override if set, else the synced prio.

titlestring, nullablerequired

Resolved title: display_title ?? title ?? raw_title.

raw_titlestring, nullablerequired
summarystring, nullablerequired
whystring, nullablerequired
what_it_doesstring, nullablerequired
user_storystring, nullablerequired
epic_idstring, nullablerequired
when_tsstring, nullablerequired

ISO date (YYYY-MM-DD) the work landed / was raised.

content_sourcestring, nullablerequired
synced_atstringrequired

ISO timestamp of the last sync write.

assigneestring, nullablerequired
claimed_atstring, nullablerequired
session_idstring, nullablerequired
depends_onarray of stringrequired
labelsarray of stringrequired
notesstring, nullablerequired
founder_ordnumber, nullablerequired
curl -X PATCH "https://www.membber.com/api/v1/board/tickets/00000d1b-0000-4000-8000-d0c500000000" \
  -H "Authorization: Bearer $MEMBBER_TOKEN" \
  -H "Idempotency-Key: 1f0e2d3c-4b5a-4678-9abc-def012345678" \
  -H "Content-Type: application/json" \
  -d '{
    "overlay": {
      "display_title": "<display_title>",
      "notes": "Added at the front desk",
      "type_override": "<type_override>",
      "prio_override": "<prio_override>",
      "epic_id": "a3ea3c95-0000-4000-8000-d0c5000000a3",
      "labels": [
        "<label>"
      ]
    }
  }'
Response, 200
{
  "ticket": {
    "id": "00000d1b-0000-4000-8000-d0c500000000",
    "source": "<source>",
    "pr_number": 1,
    "branch": "<branch>",
    "section": "<section>",
    "col": "<col>",
    "founder_col": "<founder_col>",
    "pr_state": "<pr_state>",
    "type": "<type>",
    "prio": "<prio>",
    "title": "Morning class",
    "raw_title": "<raw_title>",
    "summary": "<summary>",
    "why": "<why>",
    "what_it_does": "<what_it_does>",
    "user_story": "<user_story>",
    "epic_id": "a3ea3c95-0000-4000-8000-d0c5000000a3",
    "when_ts": "<when_ts>",
    "content_source": "<content_source>",
    "synced_at": "<synced_at>",
    "assignee": "<assignee>",
    "claimed_at": "<claimed_at>",
    "session_id": "630ddf64-0000-4000-8000-d0c500000063",
    "depends_on": [
      "<depends_on>"
    ],
    "labels": [
      "<label>"
    ],
    "notes": "Added at the front desk",
    "founder_ord": 1
  }
}

Assign or unassign a ticket.

Parameters

idstringpathrequired

Request body

assigneestring, nullablerequired

Who owns it now; null unassigns.

Response, 200

ticketobjectrequired
27 child fields
idstringrequired
sourcestringrequired
pr_numbernumber, nullablerequired
branchstring, nullablerequired
sectionstring, nullablerequired
colstring, nullablerequired

Resolved column: the founder override (founder_col) if set, else the synced col.

founder_colstring, nullablerequired

The founder column override, or null when the item is not founder-pinned.

pr_statestring, nullablerequired
typestringrequired

Resolved type: type_override if set, else the synced type.

priostringrequired

Resolved priority: prio_override if set, else the synced prio.

titlestring, nullablerequired

Resolved title: display_title ?? title ?? raw_title.

raw_titlestring, nullablerequired
summarystring, nullablerequired
whystring, nullablerequired
what_it_doesstring, nullablerequired
user_storystring, nullablerequired
epic_idstring, nullablerequired
when_tsstring, nullablerequired

ISO date (YYYY-MM-DD) the work landed / was raised.

content_sourcestring, nullablerequired
synced_atstringrequired

ISO timestamp of the last sync write.

assigneestring, nullablerequired
claimed_atstring, nullablerequired
session_idstring, nullablerequired
depends_onarray of stringrequired
labelsarray of stringrequired
notesstring, nullablerequired
founder_ordnumber, nullablerequired
curl -X POST "https://www.membber.com/api/v1/board/tickets/00000d1b-0000-4000-8000-d0c500000000/assign" \
  -H "Authorization: Bearer $MEMBBER_TOKEN" \
  -H "Idempotency-Key: 1f0e2d3c-4b5a-4678-9abc-def012345678" \
  -H "Content-Type: application/json" \
  -d '{
    "assignee": "<assignee>"
  }'
Response, 200
{
  "ticket": {
    "id": "00000d1b-0000-4000-8000-d0c500000000",
    "source": "<source>",
    "pr_number": 1,
    "branch": "<branch>",
    "section": "<section>",
    "col": "<col>",
    "founder_col": "<founder_col>",
    "pr_state": "<pr_state>",
    "type": "<type>",
    "prio": "<prio>",
    "title": "Morning class",
    "raw_title": "<raw_title>",
    "summary": "<summary>",
    "why": "<why>",
    "what_it_does": "<what_it_does>",
    "user_story": "<user_story>",
    "epic_id": "a3ea3c95-0000-4000-8000-d0c5000000a3",
    "when_ts": "<when_ts>",
    "content_source": "<content_source>",
    "synced_at": "<synced_at>",
    "assignee": "<assignee>",
    "claimed_at": "<claimed_at>",
    "session_id": "630ddf64-0000-4000-8000-d0c500000063",
    "depends_on": [
      "<depends_on>"
    ],
    "labels": [
      "<label>"
    ],
    "notes": "Added at the front desk",
    "founder_ord": 1
  }
}

Add a comment to a ticket.

Parameters

idstringpathrequired

Request body

bodystringrequired

The comment text (non-empty).

mediaarray of objectoptional

Optional pre-uploaded media descriptors to denormalise onto the comment.

client_message_idstringoptional

Client-generated idempotency key (same pattern as the messaging architecture's client_message_id). A retry with the same key on the same ticket is a no-op that returns the ORIGINAL comment, never a duplicate, this route is declared idempotency:{mode:"rpc"}, which board_comment now actually enforces.

Response, 200

commentobjectrequired
6 child fields
idstringrequired
ticket_idstringrequired
authorstringrequired
bodystringrequired
mediaarray of objectrequired

Pre-denormalised media stored on the comment (may be empty).

created_atstringrequired
curl -X POST "https://www.membber.com/api/v1/board/tickets/00000d1b-0000-4000-8000-d0c500000000/comments" \
  -H "Authorization: Bearer $MEMBBER_TOKEN" \
  -H "Idempotency-Key: 1f0e2d3c-4b5a-4678-9abc-def012345678" \
  -H "Content-Type: application/json" \
  -d '{
    "body": "<body>"
  }'
Response, 200
{
  "comment": {
    "id": "00000d1b-0000-4000-8000-d0c500000000",
    "ticket_id": "fbc29b2e-0000-4000-8000-d0c5000000fb",
    "author": "<author>",
    "body": "<body>",
    "media": [
      {}
    ],
    "created_at": "<created_at>"
  }
}

Move / reposition a ticket into To-do or Blocked (founder overlay).

Parameters

idstringpathrequired

Request body

colenumrequired

The founder can only move an item to To-do or Blocked; threads advance the rest.

todoblocked
ordnumberrequired

Fractional sort index within the target column.

Response, 200

ticketobjectrequired
27 child fields
idstringrequired
sourcestringrequired
pr_numbernumber, nullablerequired
branchstring, nullablerequired
sectionstring, nullablerequired
colstring, nullablerequired

Resolved column: the founder override (founder_col) if set, else the synced col.

founder_colstring, nullablerequired

The founder column override, or null when the item is not founder-pinned.

pr_statestring, nullablerequired
typestringrequired

Resolved type: type_override if set, else the synced type.

priostringrequired

Resolved priority: prio_override if set, else the synced prio.

titlestring, nullablerequired

Resolved title: display_title ?? title ?? raw_title.

raw_titlestring, nullablerequired
summarystring, nullablerequired
whystring, nullablerequired
what_it_doesstring, nullablerequired
user_storystring, nullablerequired
epic_idstring, nullablerequired
when_tsstring, nullablerequired

ISO date (YYYY-MM-DD) the work landed / was raised.

content_sourcestring, nullablerequired
synced_atstringrequired

ISO timestamp of the last sync write.

assigneestring, nullablerequired
claimed_atstring, nullablerequired
session_idstring, nullablerequired
depends_onarray of stringrequired
labelsarray of stringrequired
notesstring, nullablerequired
founder_ordnumber, nullablerequired
curl -X POST "https://www.membber.com/api/v1/board/tickets/00000d1b-0000-4000-8000-d0c500000000/move" \
  -H "Authorization: Bearer $MEMBBER_TOKEN" \
  -H "Idempotency-Key: 1f0e2d3c-4b5a-4678-9abc-def012345678" \
  -H "Content-Type: application/json" \
  -d '{
    "col": "todo",
    "ord": 1
  }'
Response, 200
{
  "ticket": {
    "id": "00000d1b-0000-4000-8000-d0c500000000",
    "source": "<source>",
    "pr_number": 1,
    "branch": "<branch>",
    "section": "<section>",
    "col": "<col>",
    "founder_col": "<founder_col>",
    "pr_state": "<pr_state>",
    "type": "<type>",
    "prio": "<prio>",
    "title": "Morning class",
    "raw_title": "<raw_title>",
    "summary": "<summary>",
    "why": "<why>",
    "what_it_does": "<what_it_does>",
    "user_story": "<user_story>",
    "epic_id": "a3ea3c95-0000-4000-8000-d0c5000000a3",
    "when_ts": "<when_ts>",
    "content_source": "<content_source>",
    "synced_at": "<synced_at>",
    "assignee": "<assignee>",
    "claimed_at": "<claimed_at>",
    "session_id": "630ddf64-0000-4000-8000-d0c500000063",
    "depends_on": [
      "<depends_on>"
    ],
    "labels": [
      "<label>"
    ],
    "notes": "Added at the front desk",
    "founder_ord": 1
  }
}
WhatsApp
Book a Call
Start Free