Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Thin client for Pivotal Tracker's API

Project Description

Pivotal-Py is a very thin wrapper built on top of httplib2 to make requests against the Pivotal Tracker API.


Install from PyPI with easy_install or pip:

pip install pivotal-py


Pivotal-Py requires httplib2 0.6.0 or later.


This Pivotal Tracker API client uses the token to authenticate with Pivotal Tracker. You can get a token by going to your user profile and creating an API token.

Once you have an API token making requests against the APIs follows a simple pattern of chainable methods, for example:

from pivotal import Pivotal

pv = Pivotal('TOKEN')

# Assuming a base URL of ''

# Perform a GET at /projects and processes content via ElementTree.
etree = pv.projects().get_etree()

# Perform the same GET at /projects but return the response and
# content direct from httplib2.
response, content = pv.projects().get()

Note: As seen above, there are two ways to get the content of a request:

  1. Call get_etree() to return the content as ElementTree object.
  2. Call get() to return the tuple containing both the response and content direct from httplib2.

Any positional arguments get pushed onto the URL:

# Perform a GET at /projects/[id]/stories where [id] is a project ID.
etree = pv.projects(id).stories().get_etree()

Any keyword arguments get mapped to the URL query string and appended at the end of the URL:

# Perform a GET at /projects/[id]/stories and filter stories by those that
# are not started.
etree = pv.projects(id).stories(filter='state:unstarted').get_etree()
# Results in a URL of: /projects/[id]/stories?filter=state%3Aunstarted

Note: POSTs are currently not implemented, but the plan is to implement a post method that takes a body argument which is the body of the POST:

# TODO: POST to /projects to create a new project
etree = pv.projects().post(xml_body)


0.1.3 (2011-07-08)

  • Removed Pivotal import from which was causing httplib2 issues.

0.1.2 (2011-07-08)

  • Added httplib2 as a dependency.

0.1.1 (2010-12-10)

  • Added an examples folder with a single example showing a script to send an email summarizing stories across projects to multiple team members.
  • Provide both get() and get_etree(). The get() method returns the response and content of the request directly from httplib2. The get_etree() will return an ElementTree object of the content.

0.1.0 (2010-10-15)

  • Initial public release.

Release History

This version
History Node


History Node


History Node


History Node


Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, Size & Hash SHA256 Hash Help File Type Python Version Upload Date
(4.7 kB) Copy SHA256 Hash SHA256
Source None Jul 9, 2011

Supported By

Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Google Google Cloud Servers