Basecamp API

Data Reference

The following sections describe the different data types used by the Basecamp API.

Abbreviated post

<post>
  <id type="integer">#{id}</id>
  <title>#{title}</title>
  <posted-on type="datetime">#{posted_on}</posted-on>
  <attachments-count type="integer">#{attachments_count}</attachments-count>
  <category>
    <id type="integer">#{id}</id>
    <name>#{name}</name>
  </category>
</post>

Comment

<comment id="#{id}">
  <post_id>#{post_id}</post_id>
  <creator_name>#{creator_name}</creator_name>
  <creator_id>#{creator_id}</creator_id>
  <body>#{body}</body>
  <posted_on>#{posted_on}</posted_on>
</comment>

Company

<company>
  <id type="integer">#{id}</id>
  <name>#{name}</name>
  <address-one>#{address_one}</address-one>
  <address-two>#{address_two}</address-two>
  <city>#{city}</city>
  <state>#{state}</state>
  <zip>#{zip}</zip>
  <country>#{country}</country>
  <web-address>#{web_address}</web-address>
  <phone-number-office>#{phone_number_office></phone-number-office>
  <phone-number-fax>#{phone_number_fax}</phone-number-fax>
  <time-zone-id>#{time_zone_id}</time-zone-id>
  <can-see-private type="boolean">#{can_see_private}</can-see-private>

  <!-- for non-client companies -->
  <url-name>#{url_name}</url-name>
</company>

File category

<attachment-category>
  <id type="integer">#{id}</id>
  <name>#{name}</name>
  <project-id type="integer">#{project_id}</project-id>
  <elements-count type="integer">#{elements_count}</elements-count>
</attachment-category>

Message category

<post-category>
  <id type="integer">#{id}</id>
  <name>#{name}</name>
  <project-id type="integer">#{project_id}</project-id>
  <elements-count type="integer">#{elements_count}</elements-count>
</post-category>

Milestone

<milestone>
  <id type="integer">#{id}</id>
  <title>#{title}</title>
  <deadline type="date">#{deadline}</deadline>
  <completed type="boolean">#{true|false}</completed>
  <project-id type="integer">#{project_id}</project-id>
  <created-on type="datetime">#{created_on}</created-on>
  <creator-id type="integer">#{creator_id}</creator-id>
  <responsible-party-id type="integer">#{responsible_party_id}</responsible-party-id>
  <responsible-party-type>#{responsible_party_type}</responsible-party-type>

  <!-- if the milestone has been completed -->
  <completed-on type="datetime">#{completed_on}</completed-on>
  <completer-id type="integer">#{completer_id}</completer-id>
</milestone>

Person

<person>
  <id type="integer">#{id}</id>
  <first-name>#{first_name}</first-name>
  <last-name>#{last_name}</last-name>
  <title>#{title}</title>
  <email-address>#{email_address}</email-address}
  <im-handle>#{im_handle}</im-handle>
  <im-service>#{im_service}</im-service>
  <phone-number-office>#{phone_number_office}</phone-number-office>
  <phone-number-office-ext>#{phone_number_office_ext}</phone-number-office-ext>
  <phone-number-mobile>#{phone_number_mobile}</phone-number-mobile>
  <phone-number-home>#{phone_number_home}</phone-number-home>
  <phone-number-fax>#{phone_number_fax}</phone-number-fax>
  <last-login type="datetime">#{last_login}</last-login>
  <client-id type="integer">#{client_id}</client-id>

  <!-- if user is an administrator, or is self -->
  <user-name>#{user_name}</user-name>

  <!-- if user is self -->
  <password>#{password}</password>
  <token>#{token}</token>

  <!-- if user is an administrator -->
  <administrator type="boolean">#{administrator}</administrator>
  <deleted type="boolean">#{deleted}</deleted>
  <has-access-to-new-projects type="boolean">#{has_access_to_new_projects}</has-access-to-new-projects>
</person>

Post

<post>
  <id type="integer">#{id}</id>
  <title>#{title}</title>
  <body>#{body}</body>
  <posted-on type="datetime">#{posted_on}</posted-on>
  <project-id type="integer">#{project_id}</project-id>
  <category-id type="integer">#{category_id}</category-id>
  <author-id type="integer">#{author_id}</author-id>
  <milestone-id type="integer">#{milestone_id}</milestone-id>
  <comments-count type="integer">#{comments_count}</comments-count>
  <attachments-count type="integer">#{attachments_count}</attachments-count>
  <use-textile type="boolean">#{use_textile}</use-textile>
  <extended-body>#{extended_body}</extended-body>
  <display-body>#{display_body}</display-body>
  <display-extended-body>#{display_extended_body}</display-extended-body>

  <!-- if user can see private posts -->
  <private type="boolean">#{private}</private>
</post>

Project

<project>
  <id type="integer">#{id}</id>
  <name>#{name}</name>
  <created-on type="datetime">#{created_on}</created-on>
  <status>#{status}</status>
  <last-changed-on type="datetiem">#{last_changed_on}</last-changed-on>
  <company>
    <id type="integer">#{id}</id>
    <name>#{name}</name>
  </company>

  <!-- if user is administrator, or show_announcement is true -->
  <announcement>#{announcement}</announcement>

  <!-- if user is administrator -->
  <start-page>#{start_page}</start-page>
  <show-writeboards type="boolean">#{show_writeboards}</show-writeboards>
  <show-announcement type="boolean">#{show_announcement}</show-announcement>
</project>

Time entry

<time-entry>
  <id type="integer">#{id}</id>
  <project-id type="integer">#{project-id}</project-id>
  <person-id type="integer">#{person-id}</person-id>
  <date type="date">#{date}</date>
  <hours>#{hours}</hours>
  <description>#{description}</description>
  <todo-item-id type="integer">#{todo-item-id}</todo-item-id>
</time-entry>

Todo item

<todo-item>
  <id type="integer">#{id}</id>
  <content>#{content}</content>
  <position type="integer">#{position}</position>
  <created-on type="datetime">#{created_on}</created-on>
  <creator-id type="integer">#{creator_id}</creator-id>
  <completed type="boolean">#{completed}</completed>

  <!-- if the item has a responsible party -->
  <responsible-party-type>#{responsible_party_type}</responsible-party-type>
  <responsible-party-id type="integer">#{responsible_party_id}</responsible-party-id>

  <!-- if the item has been completed -->
  <completed-on type="datetime">#{completed_on}</completed-on>
  <completer-id type="integer">#{completer_id}</completer-id>
</todo-item>

Todo list

<todo-list>
  <id type="integer">#{id}</id>
  <name>#{name}</name>
  <description>#{description}</description>
  <project-id type="integer">#{project_id}</project-id>
  <milestone-id type="integer">#{milestone_id}</milestone-id>
  <position type="integer">#{position}</position>

  <!-- if user can see private lists -->
  <private type="boolean">#{private}</private>

  <!-- if todo-items are included in the response -->
  <todo-items>
    <todo-item>
      ...
    </todo-item>
    <todo-item>
      ...
    </todo-item>
    ...
  </todo-items>
</todo-list>