The public Travis API
Switch branches/tags
deploy.2015-07-14.12-50 deploy.2015-03-24.11-36 deploy.2015-03-24.11-03 deploy.2015-01-27.14-58 deploy.2015-01-13.15-06 deploy.2014-12-01.12-34 deploy.2014-10-31.14-12 deploy.2014-10-12.13-20 deploy.2014-10-01.18-42 deploy.2014-09-25.11-11 deploy.2014-09-11.15-48 deploy.2014-09-11.12-50 deploy.2014-09-10.09-09 deploy.2014-09-10.08-52 deploy.2014-07-30.14-51 deploy.2014-07-16.16-23 deploy.2014-07-15.14-33 deploy.2014-07-14.13-10 deploy.2014-07-07.15-00 deploy.2014-07-07.14-01 deploy.2014-07-03.09-36 deploy.2014-06-20.11-10 deploy.2014-06-18.13-07 deploy.2014-06-18.12-59 deploy.2014-06-18.12-18 deploy.2014-06-17.15-00 deploy.2014-05-21.10-41 deploy.2014-05-13.13-35 deploy.2014-05-12.14-07 deploy.2014-05-12.13-57 deploy.2014-05-08.09-23 deploy.2014-05-05.13-59 deploy.2014-05-05.10-58 deploy.2014-05-01.14-36 deploy.2014-04-28.14-17 deploy.2014-04-25.15-08 deploy.2014-04-24.07-22 deploy.2014-04-23.16-08 deploy.2014-04-23.15-32 deploy.2014-04-23.15-26 deploy.2014-04-23.12-29 deploy.2014-04-23.12-15 deploy.2014-04-23.12-05 deploy.2014-04-23.11-59 deploy.2014-04-23.11-45 deploy.2014-04-23.11-32 deploy.2014-04-23.11-28 deploy.2014-04-23.11-02 deploy.2014-04-23.10-58 deploy.2014-04-23.10-54 deploy.2014-04-23.10-51 deploy.2014-04-09.18-16 deploy.2014-04-09.17-36 deploy.2014-04-09.15-52 deploy.2014-04-03.16-05 deploy.2014-03-19.14-10 deploy.2014-03-12.10-19 deploy.2014-03-12.09-02 deploy.2014-03-11.12-25 deploy.2014-02-26.19-18 deploy.2014-02-26.19-15 deploy.2014-01-30.14-35 deploy.2014-01-29.16-03 deploy.2014-01-28.18-32 deploy.2014-01-20.12-17 deploy.2014-01-20.11-58 deploy.2014-01-17.17-16 deploy.2014-01-17.16-40 deploy.2014-01-17.14-42 deploy.2013-12-04.12-33 deploy.2013-12-01.18-49 deploy.2013-11-28.16-55 deploy.2013-11-23.10-50 deploy.2013-11-22.20-29 deploy.2013-11-13.08-51 deploy.2013-11-08.10-35 deploy.2013-11-08.10-28 deploy.2013-11-08.10-26 deploy.2013-11-08.10-06 deploy.2013-11-06.19-35 deploy.2013-11-06.19-33 deploy.2013-10-30.18-06 deploy.2013-10-17.12-47 deploy.2013-10-17.12-38 deploy.2013-10-16.16-28 deploy.2013-10-16.15-56 deploy.2013-10-15.12-33 deploy.2013-10-15.10-31 deploy.2013-10-03.15-29 deploy.2013-10-03.14-40 deploy.2013-09-16.12-46 deploy.2013-09-12.12-02 deploy.2013-09-11.15-25 deploy.2013-09-10.11-48 deploy.2013-09-10.11-39 deploy.2013-09-10.11-18 deploy.2013-09-10.10-41 deploy.2013-09-10.10-05 deploy.2013-09-10.09-58 deploy.2013-09-10.09-32
Nothing to show
Clone or download

Travis API

Build Status


You will need the following packages to get travis-api to work:

  1. PostgreSQL 9.3 or higher
  2. Bundler
  3. Redis
  4. Optional: RabbitMQ Server
  5. Optional: Nginx - If working in Ubuntu please install nginx manually from source: Download and extract latest nginx version, open a terminal in extracted folder and then run the following:
    $ sudo apt-get install libpcre3 libpcre3-dev
    $ auto/configure --user=$USER
    $ make
    $ sudo make install
    $ sudo ln -s /usr/local/nginx/sbin/nginx /bin/nginx



$ bundle install

Main Database & Logs Database setup

You might need to create a role first. For this you should run the following:

$ sudo -u postgres psql -c "CREATE USER yourusername WITH SUPERUSER PASSWORD 'yourpassword'"

Databases are set up with a Rake task that uses the database schemas (structure.sql) in travis-migrations. Details can be found in the Rakefile. You can override the travis-migrations branch that is being used by setting the environment variable TRAVIS_MIGRATIONS_BRANCH.

To create and migrate the Databases:

$ ENV=development bundle exec rake db:create
$ ENV=test bundle exec rake db:create

Please Note: The database names are configured using the environment variable ENV. If you are using a different configuration you will have to make your own adjustments. The default environment is test.

Run tests

$ bundle exec rake

Run the server (development)

ENV=development bundle exec ruby -Ilib -S rackup

To test your branch locally:

  • checkout your branch
  • run the local server:
ENV=development bundle exec ruby -Ilib -S rackup
  • get the correct token in another window:
travis login --api-endpoint=http://localhost:9292
travis token --api-endpoint=http://localhost:9292
  • run a request:
curl -H "Travis-API-Version: 3" \
     -H "Authorization: token xxxxxxxxxxxx" \

(The database connection can be overwritten by setting a DATABASE_URL env var. Please ensure you also set ENV to the corresponding env and add encryption key config to config/travis.yml)

Test billing locally:

To test billing locally add the following code to the config/travis.yml:

    url: "http://localhost:9292"
    auth_key: "auth_keys"

go to your local api repo and make sure API is running on port 9293:

ENV=development  bundle exec ruby -Ilib -S rackup -p 9293

go to your local billing repo and run which runs on 9292:

make start

and then you can run:

curl -H "Travis-API-Version: 3" \
     -H "content-type: application/json" \
     -H "Authorization: token <your-token>" \

and get:

  "@type": "subscriptions",
  "@href": "/subscriptions",
  "@representation": "standard",
  "subscriptions": [


Run the server (production)

$ bundle exec script/server

If you have problems with Nginx because the websocket is already in use, try restarting your computer.


  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

API documentation

v3 documentation can be found at which is a repository that can be found at

Adding V3 Endpoints Developer Documentation

Start with the find/get spec (for example: spec/v3/services/caches/find_spec.rb) for your new endpoint. If you don't have a find route start with whatever route you want to add first. Run the test and add the files you need to clear the errors. They should be:

  • A service (lib/travis/api/v3/services/caches/find.rb)
  • A query (lib/travis/api/v3/queries/caches.rb)
  • Register the service in v3/services.rb (alphabetical order please)
  • Add a route (v3/routes.rb) Re-run the test at this point. Depending on what objects you are returning you may also need to add:
  • Add a model (either pulls from the DB or a wrapper for the class of the objects returned from another source (s3 for example), or that structures the result you will be passing back to the client)
  • Add a renderer (if needed to display your new model/object/collection).