Basecamp API

Milestones API Calls

Complete

/milestones/complete/#{id}

Marks the specified milestone as complete.

Response

<milestone>
  ...
</milestone>

Create

/projects/#{project_id}/milestones/create

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".

XML Request

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

YAML Request

---
milestone:
  title: #{title}
  deadline: #{deadline}
  responsible-party: #{responsible_party}
  notify: #{true|false}

Response

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

Create (batch)

/projects/#{project_id}/milestones/create

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.

XML 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>

YAML Request

---
milestone:
  - title: #{title}
    deadline: #{deadline}
    responsible-party: #{responsible_party}
    notify: #{true|false}
  - title: #{title}
    deadline: #{deadline}
    responsible-party: #{responsible_party}
    notify: #{true|false}
  ...

Response

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

Delete

/milestones/delete/#{id}

Deletes the given milestone from the project.

Response

<milestone>
  ...
</milestone>

List

/projects/#{project_id}/milestones/list

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.

XML Request

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

YAML Request

---
find: #{all|late|completed|upcoming}

Response

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

Uncomplete

/milestones/uncomplete/#{id}

Marks the specified milestone as uncomplete.

Response

<milestone>
  ...
</milestone>

Update

/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.

XML 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>

YAML Request

---
milestone:
  title: #{title}
  deadline: #{deadline}
  responsible-party: #{responsible_party}
  notify: #{true|false}
move-upcoming-milestones: #{true|false}
move-upcoming-milestones-off-weekends: #{true|false}

Response

<milestone>
  ...
</milestone>