Basecamp API

Milestones API Calls

List

GET /projects/#{project_id}/milestones/list.xml

This lets you query the list of milestones for a project. You can either return all milestones, or only those that are late, completed, or upcoming.

Request

<request>
  <!-- optional, defaults to all -->
  <find>#{all|late|completed|upcoming}</find>
</request>

Response

<milestones>
  <milestone>
    ...
  </milestone>
  <milestone>
    ...
  </milestone>
  ...
</milestones>

Complete

PUT /milestones/complete/#{id}

Marks the specified milestone as complete.

Response

<milestone>
  ...
</milestone>

Uncomplete

PUT /milestones/uncomplete/#{id}

Marks the specified milestone as uncomplete.

Response

<milestone>
  ...
</milestone>

Create

POST /projects/#{project_id}/milestones.xml

Creates a single milestone. To create multiple milestones in a single call, see the “create (batch)” function. To make a company responsible for the milestone, prefix the company id with a “c”.

Request

<request>
  <milestone>
    <title>#{title}</title>
    <deadline type="date">#{deadline}</deadline>
    <responsible-party>#{id}</responsible-party>
    <notify>#{true|false}</notify>
  </milestone>
</request>

Response

<milestones>
  <milestone>
    ...
  </milestone>
</milestones>

Create (batch)

POST /projects/#{project_id}/milestones.xml

With this function you can create multiple milestones in a single request. See the “create” function for a description of the individual fields in the milestone.

Request

<request>
  <milestone>
    <title>#{title}</title>
    <deadline>#{deadline}</deadline>
    <responsible-party>#{id}</responsible-party>
    <notify>#{true|false}</notify>
  </milestone>
  <milestone>
    <title>#{title}</title>
    <deadline>#{deadline}</deadline>
    <responsible-party>#{id}</responsible-party>
    <notify>#{true|false}</notify>
  </milestone>
  ...
</request>

Response

<milestones>
  <milestone>
    ...
  </milestone>
  <milestone>
    ...
  </milestone>
  ...
</milestones>

Update

POST /milestones/update/#{id}

Modifies a single milestone. You can use this to shift the deadline of a single milestone, and optionally shift the deadlines of subsequent milestones as well.

Request

<request>
  <milestone>
    <title>#{title}</title>
    <deadline>#{deadline}</deadline>
    <responsible-party>#{responsible_party}</responsible-party>
    <notify>#{true|false}</notify>
  </milestone>
  <move-upcoming-milestones>#{true|false}</move-upcoming-milestones>
  <move-upcoming-milestones-off-weekends>#{true|false}</move-upcoming-milestones-off-weekends>
</request>

Response

<milestone>
  ...
</milestone>

Delete

POST /milestones/delete/#{id}

Deletes the given milestone from the project.

Response

<milestone>
  ...
</milestone>