Skip to content

Drafts API and My Tasks: new section and draft lifecycle docs#422

Open
jeremy wants to merge 4 commits into
masterfrom
api-docs-sync
Open

Drafts API and My Tasks: new section and draft lifecycle docs#422
jeremy wants to merge 4 commits into
masterfrom
api-docs-sync

Conversation

@jeremy

@jeremy jeremy commented Jul 23, 2026

Copy link
Copy Markdown
Member

This adds a new Drafts endpoint to the API, and documents previously-undocumented behavior around drafting and publishing, and around your My Tasks ("Up Next") list.

New endpoint

  • DraftsGET /my/drafts.json returns a paginated list of your unpublished drafts across every draftable type (messages, documents, uploads, and client approvals/correspondences), most recently updated first.

Draft lifecycle for messages and documents

Messages and Documents now spell out how drafting and publishing actually work. This is existing behavior, written down for the first time:

  • Omitting status on a JSON create leaves the record as a draft. It isn't posted and notifies no one. Send status: "active" to publish immediately.
  • Publish an existing draft by updating it with status: "active". A message update merges, so you can publish without resending content. A document update replaces, so you must resend title and content — a status-only update is rejected.
  • Publishing is the one notifying step: it records a single publication event and delivers exactly one notification per recipient. Saving a draft, or editing after publication, notifies no one.

My Tasks

My assignments gains two sections, documenting existing endpoints:

  • Act on assignments — how to assign, complete, and reschedule, and which endpoint applies to each type. To-dos, cards, and card-table steps differ: a card is completed by moving it into a done column, and a step is assigned, rescheduled, and completed through its own endpoints rather than its parent card's. Also notes that these updates clear fields you omit.
  • Prioritize assignments — the Up Next endpoints to add, remove, and reorder prioritized items: which id to send (including for a card step surfaced under its parent card), and the exact validation responses when reordering.

Corrections

  • Client approvals and client correspondences: the parent.app_url for a client board now renders as the singleton …/client/board rather than …/client/board.<id>. The examples are corrected to match.
  • Schedule entries — a JSON create defaults to active, and a drafted entry is not listed by Get my drafts.
  • README links the new Drafts section.

Synced from bc3 doc/api/ by script/api/sync_to_bc3_api — not a hand-edit.

Copilot AI review requested due to automatic review settings July 23, 2026 20:07

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Expands the Basecamp API documentation around draftable content and “My Tasks” (Up Next), adding a new Drafts section and clarifying draft/publish lifecycle semantics for messages/documents plus assignment actions/prioritization.

Changes:

  • Add a new Drafts section documenting GET /my/drafts.json and its response semantics.
  • Document draft creation/publishing behavior for Messages and Documents (including differences in update semantics when publishing drafts).
  • Add Act on assignments and Prioritize assignments guidance to My assignments, and note schedule-entry draft behavior.

Tip

If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
sections/drafts.md New Drafts documentation including the GET /my/drafts.json endpoint and example response.
sections/messages.md Clarifies message draft default behavior and adds “Publishing a draft” details.
sections/documents.md Clarifies document draft default behavior and adds “Publishing a draft” details (replace vs merge semantics).
sections/my_assignments.md Adds guidance for acting on assignments and managing Up Next priorities, including validation responses.
sections/schedule_entries.md Documents status behavior on create and clarifies schedule-entry drafts are excluded from “Get my drafts”.
README.md Adds the Drafts section to the endpoint index.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread sections/schedule_entries.md Outdated
Comment thread sections/drafts.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3d13ea2a0e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread sections/my_assignments.md Outdated
Copilot AI review requested due to automatic review settings July 23, 2026 21:00

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated no new comments.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 42f57ddc64

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread sections/my_assignments.md Outdated
Copilot AI review requested due to automatic review settings July 24, 2026 01:48

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (2)

sections/my_assignments.md:653

  • This sentence uses “card-table step” (hyphenated) but earlier in the same doc the term is written as “card table steps”. Keep the term consistent throughout this section.
**Note:** these updates replace omitted fields. A to-do update and a card-table step update both clear any field you don't send — including `assignee_ids`, `due_on`, and (for steps) `title` — so resend the current values you want to keep. A card update is the one that preserves omitted `title` and `content`, but even there `due_on` is cleared unless you resend it. In short: to change only assignees or only the due date, echo the record's other current fields in the same request.

sections/my_assignments.md:661

  • Minor terminology consistency: use “card table step” (no hyphen) to match earlier mentions of “card table steps” in this doc.
Identify the item by the **recording id** of the thing that carries the priority, not by the assignment id. For a plain to-do or card that's the item's `id`. For a card-table step shown normalized under its parent card, the item's `id` is the *card's* — use the item's `priority_recording_id` from [Get assignments](#get-assignments) instead, which points at the prioritized step.

Comment thread sections/my_assignments.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 349705c0a4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread sections/drafts.md Outdated
Copilot AI review requested due to automatic review settings July 24, 2026 02:06

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.

Comment on lines +15 to +18
- [Act on assignments](#act-on-assignments)
- [Prioritize an assignment](#prioritize-an-assignment)
- [Deprioritize an assignment](#deprioritize-an-assignment)
- [Reorder Up Next](#reorder-up-next)
Comment thread sections/messages.md

A message update **merges** the fields you send, so you don't need to resend `subject` or `content` — the draft's existing content is preserved.

Publishing is what actually posts the message, and it happens exactly once. It records a single publication event; once the resulting `Event::RelayJob` runs, each subscriber who should hear about the message receives exactly one notification. Creating or re-saving a draft notifies no one — only publishing does. (Documents publish the same way; see [Publishing a draft](documents.md#publishing-a-draft) in the documents section.)
Comment thread sections/drafts.md

* `GET /my/drafts.json` will return a [paginated list][pagination] of the current user's drafts, most recently updated first, regardless of how they were created. Drafts whose project has been archived or trashed are excluded.

Five kinds of draft are returned:

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 182f1b8e15

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

- [Get assignments](#get-assignments)
- [Get completed assignments](#get-completed-assignments)
- [Get due assignments](#get-due-assignments)
- [Act on assignments](#act-on-assignments)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove the non-endpoint from the endpoint list

In this context, adding Act on assignments to the Endpoints: list makes it look like a callable /my/assignments endpoint, but the linked section is only guidance and has no route bullet like * \METHOD /path`` or request/cURL block. API readers scanning the endpoint list will hit a section that cannot be called directly; please move this overview out of the endpoint list or fold it into a real endpoint section.

AGENTS.md reference: AGENTS.md:L38-L42

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants