diff --git a/CHANGELOG.md b/CHANGELOG.md index c8d333e..c95e6f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ 0.1.0 --- - Initial release. + +0.2.0 +--- +- Feature: Added auto pagination. +- Bug: Added `current_velocity` attribute to `Project`. +- Bug: Removed attributes from `Iteration` that don't exist. diff --git a/README.md b/README.md index e72e0d6..ca9df64 100644 --- a/README.md +++ b/README.md @@ -42,8 +42,8 @@ client.project(project_id, fields: ':default,epics') # Eage ## TODO -- Pagination -- Create, Update, Delete of Resources +- Add missing resources and endpoints +- Add create, update, delete for resources ## Contributing diff --git a/lib/tracker_api.rb b/lib/tracker_api.rb index c4dbf0b..2c2aa59 100644 --- a/lib/tracker_api.rb +++ b/lib/tracker_api.rb @@ -6,6 +6,7 @@ require 'faraday_middleware' # stdlib +require 'addressable/uri' require 'forwardable' require 'logger' diff --git a/lib/tracker_api/client.rb b/lib/tracker_api/client.rb index b3e0b2e..7e42a3f 100644 --- a/lib/tracker_api/client.rb +++ b/lib/tracker_api/client.rb @@ -1,14 +1,18 @@ module TrackerApi class Client - USER_AGENT = "Ruby/#{RUBY_VERSION} (#{RUBY_PLATFORM}; #{RUBY_ENGINE}) TrackerApi/#{TrackerApi::VERSION} Faraday/#{Faraday::VERSION}".freeze + USER_AGENT = "Ruby/#{RUBY_VERSION} (#{RUBY_PLATFORM}; #{RUBY_ENGINE}) TrackerApi/#{TrackerApi::VERSION} Faraday/#{Faraday::VERSION}".freeze - attr_accessor :url, :api_version, :token, :logger, :connection + # Header keys that can be passed in options hash to {#get},{#paginate} + CONVENIENCE_HEADERS = Set.new([:accept, :content_type]) + + attr_reader :url, :api_version, :token, :logger, :connection, :auto_paginate, :last_response # Create Pivotal Tracker API client. # # @param [Hash] options the connection options # @option options [String] :token API token to use for requests # @option options [String] :url Main HTTP API root + # @option options [Boolean] :auto_paginate Client should perform pagination automatically. Default true. # @option options [String] :api_version The API version URL path # @option options [String] :logger Custom logger # @option options [String] :adapter Custom http adapter to configure Faraday with @@ -17,15 +21,14 @@ class Client # @example Creating a Client # Client.new token: 'my-super-special-token' def initialize(options={}) - url = options[:url] || 'https://www.pivotaltracker.com' - @url = URI.parse(url).to_s - - @api_version = options[:api_version] || '/services/v5' - @logger = options[:logger] || Logger.new(nil) - adapter = options[:adapter] || :net_http - connection_options = options[:connection_options] || { ssl: { verify: true } } + url = options.fetch(:url, 'https://www.pivotaltracker.com') + @url = Addressable::URI.parse(url).to_s + @api_version = options.fetch(:api_version, '/services/v5') + @logger = options.fetch(:logger, Logger.new(nil)) + adapter = options.fetch(:adapter, :net_http) + connection_options = options.fetch(:connection_options, { ssl: { verify: true } }) + @auto_paginate = options.fetch(:auto_paginate, true) @token = options[:token] - raise 'Missing required options: :token' unless @token @connection = Faraday.new({ url: @url }.merge(connection_options)) do |builder| @@ -42,30 +45,130 @@ def initialize(options={}) end end - def request(options={}) - method = options[:method] || :get - url = options[:url] || File.join(@url, @api_version, options[:path]) - token = options[:token] || @token + # Make a HTTP GET request + # + # @param path [String] The path, relative to api endpoint + # @param options [Hash] Query and header params for request + # @return [Faraday::Response] + def get(path, options = {}) + request(:get, parse_query_and_convenience_headers(path, options)) + end + + # Make one or more HTTP GET requests, optionally fetching + # the next page of results from information passed back in headers + # based on value in {#auto_paginate}. + # + # @param path [String] The path, relative to {#api_endpoint} + # @param options [Hash] Query and header params for request + # @param block [Block] Block to perform the data concatenation of the + # multiple requests. The block is called with two parameters, the first + # contains the contents of the requests so far and the second parameter + # contains the latest response. + # @return [Array] + def paginate(path, options = {}, &block) + opts = parse_query_and_convenience_headers path, options.dup + @last_response = request :get, opts + data = @last_response.body + raise TrackerApi::Errors::UnexpectedData, 'Array expected' unless data.is_a? Array + + if @auto_paginate + pager = Pagination.new @last_response.headers + + while pager.more? + opts[:params].update(pager.next_page_params) + + @last_response = request :get, opts + pager = Pagination.new @last_response.headers + if block_given? + yield(data, @last_response) + else + data.concat(@last_response.body) if @last_response.body.is_a?(Array) + end + end + end + + data + end + + # Get projects + # + # @param [Hash] params + # @return [Array[TrackerApi::Resources::Project]] + def projects(params={}) + Endpoints::Projects.new(self).get(params) + end + + # Get project + # + # @param [Hash] params + # @return [TrackerApi::Resources::Project] + def project(id, params={}) + Endpoints::Project.new(self).get(id, params) + end + + private + + def parse_query_and_convenience_headers(path, options) + raise 'Path can not be blank.' if path.to_s.empty? + + opts = { body: options[:body] } + + opts[:url] = options[:url] || File.join(@url, @api_version, path.to_s) + opts[:method] = options[:method] || :get + opts[:params] = options[:params] || {} + opts[:token] = options[:token] || @token + headers = { 'User-Agent' => USER_AGENT, + 'X-TrackerToken' => opts.fetch(:token) }.merge(options.fetch(:headers, {})) + + CONVENIENCE_HEADERS.each do |h| + if header = options[h] + headers[h] = header + end + end + opts[:headers] = headers + + opts + end + + def request(method, options = {}) + url = options.fetch(:url) params = options[:params] || {} body = options[:body] - headers = { 'User-Agent' => USER_AGENT, 'X-TrackerToken' => token }.merge(options[:headers] || {}) + headers = options[:headers] - connection.send(method) do |req| - req.url url + @last_response = response = connection.send(method) do |req| + req.url(url) req.headers.merge!(headers) req.params.merge!(params) req.body = body end + response rescue Faraday::Error::ClientError => e raise TrackerApi::Error.new(e) end - def projects(params={}) - Endpoints::Projects.new(self).get(params) - end + class Pagination + attr_accessor :headers, :total, :limit, :offset, :returned - def project(id, params={}) - Endpoints::Project.new(self).get(id, params) + def initialize(headers) + @headers = headers + @total = headers['x-tracker-pagination-total'].to_i + @limit = headers['x-tracker-pagination-limit'].to_i + @offset = headers['x-tracker-pagination-offset'].to_i + @returned = headers['x-tracker-pagination-returned'].to_i + end + + def more? + (offset + limit) < total + end + + def next_offset + offset + limit + end + + def next_page_params + { limit: limit, offset: next_offset } + end end end end diff --git a/lib/tracker_api/endpoints/epic.rb b/lib/tracker_api/endpoints/epic.rb index 9673a7b..bd7e7c8 100644 --- a/lib/tracker_api/endpoints/epic.rb +++ b/lib/tracker_api/endpoints/epic.rb @@ -8,10 +8,7 @@ def initialize(client) end def get(project_id, id) - data = client.request( - method: :get, - :path => "/projects/#{project_id}/epics/#{id}" - ).body + data = client.get("/projects/#{project_id}/epics/#{id}").body Resources::Epic.new({ client: client }.merge(data)) end diff --git a/lib/tracker_api/endpoints/epics.rb b/lib/tracker_api/endpoints/epics.rb index 71df2e7..6e5cffa 100644 --- a/lib/tracker_api/endpoints/epics.rb +++ b/lib/tracker_api/endpoints/epics.rb @@ -8,11 +8,7 @@ def initialize(client) end def get(project_id, params={}) - data = client.request( - method: :get, - path: "/projects/#{project_id}/epics", - params: params - ).body + data = client.paginate("/projects/#{project_id}/epics", params: params) raise TrackerApi::Errors::UnexpectedData, 'Array of epics expected' unless data.is_a? Array data.map { |epic| Resources::Epic.new({ client: client }.merge(epic)) } diff --git a/lib/tracker_api/endpoints/iterations.rb b/lib/tracker_api/endpoints/iterations.rb index 3565e47..e77fa76 100644 --- a/lib/tracker_api/endpoints/iterations.rb +++ b/lib/tracker_api/endpoints/iterations.rb @@ -8,11 +8,7 @@ def initialize(client) end def get(project_id, params={}) - data = client.request( - method: :get, - path: "/projects/#{project_id}/iterations", - params: params - ).body + data = client.paginate("/projects/#{project_id}/iterations", params: params) raise TrackerApi::Errors::UnexpectedData, 'Array of iterations expected' unless data.is_a? Array data.map { |iteration| Resources::Iteration.new({ client: client }.merge(iteration)) } diff --git a/lib/tracker_api/endpoints/project.rb b/lib/tracker_api/endpoints/project.rb index 9360f71..cda1959 100644 --- a/lib/tracker_api/endpoints/project.rb +++ b/lib/tracker_api/endpoints/project.rb @@ -8,11 +8,7 @@ def initialize(client) end def get(id, params={}) - data = client.request( - method: :get, - path: "/projects/#{id}", - params: params - ).body + data = client.get("/projects/#{id}", params: params).body Resources::Project.new({ client: client }.merge(data)) end diff --git a/lib/tracker_api/endpoints/projects.rb b/lib/tracker_api/endpoints/projects.rb index 5c4d2cf..d81314b 100644 --- a/lib/tracker_api/endpoints/projects.rb +++ b/lib/tracker_api/endpoints/projects.rb @@ -8,11 +8,7 @@ def initialize(client) end def get(params={}) - data = client.request( - method: :get, - path: '/projects', - params: params - ).body + data = client.paginate('/projects', params: params) raise TrackerApi::Errors::UnexpectedData, 'Array of projects expected' unless data.is_a? Array data.map { |project| Resources::Project.new({ client: client }.merge(project)) } diff --git a/lib/tracker_api/endpoints/stories.rb b/lib/tracker_api/endpoints/stories.rb index c215cd1..894d54b 100644 --- a/lib/tracker_api/endpoints/stories.rb +++ b/lib/tracker_api/endpoints/stories.rb @@ -8,11 +8,7 @@ def initialize(client) end def get(project_id, params={}) - data = client.request( - method: :get, - path: "/projects/#{project_id}/stories", - params: params - ).body + data = client.paginate("/projects/#{project_id}/stories", params: params) raise TrackerApi::Errors::UnexpectedData, 'Array of stories expected' unless data.is_a? Array data.map { |story| Resources::Story.new({ client: client }.merge(story)) } diff --git a/lib/tracker_api/endpoints/story.rb b/lib/tracker_api/endpoints/story.rb index babbfe6..2543787 100644 --- a/lib/tracker_api/endpoints/story.rb +++ b/lib/tracker_api/endpoints/story.rb @@ -8,10 +8,7 @@ def initialize(client) end def get(project_id, id) - data = client.request( - method: :get, - :path => "/projects/#{project_id}/stories/#{id}" - ).body + data = client.get("/projects/#{project_id}/stories/#{id}").body Resources::Story.new({ client: client }.merge(data)) end diff --git a/lib/tracker_api/resources/iteration.rb b/lib/tracker_api/resources/iteration.rb index 31399e3..c6c0fab 100644 --- a/lib/tracker_api/resources/iteration.rb +++ b/lib/tracker_api/resources/iteration.rb @@ -5,9 +5,7 @@ class Iteration attribute :client - attribute :created_at, DateTime attribute :finish, DateTime - attribute :id, Integer attribute :kind, String attribute :length, Integer attribute :number, Integer @@ -17,7 +15,6 @@ class Iteration attribute :stories, [TrackerApi::Resources::Story] attribute :story_ids, [Integer] attribute :team_strength, Float - attribute :updated_at, DateTime end end end diff --git a/lib/tracker_api/resources/project.rb b/lib/tracker_api/resources/project.rb index 8caced7..652e550 100644 --- a/lib/tracker_api/resources/project.rb +++ b/lib/tracker_api/resources/project.rb @@ -11,6 +11,7 @@ class Project attribute :bugs_and_chores_are_estimatable, Boolean attribute :created_at, DateTime attribute :current_iteration_number, Integer + attribute :current_velocity, Integer attribute :description, String attribute :enable_following, Boolean attribute :enable_incoming_emails, Boolean @@ -39,6 +40,11 @@ class Project attribute :version, Integer attribute :week_start_day, String + # @return [String] Comma separated list of labels. + def label_list + @label_list ||= labels.collect(&:name).join(',') + end + # @return [Array[Epic]] epics associated with this project def epics(params={}) raise ArgumentError, 'Expected @epics to be an Array' unless @epics.is_a? Array @@ -48,7 +54,7 @@ def epics(params={}) end # @param [Hash] params - # @option params [String] :scope ('') Restricts the state of iterations to return. + # @option params [String] :scope Restricts the state of iterations to return. # If not specified, it defaults to all iterations including done. # Valid enumeration values: done, current, backlog, current_backlog. # @option params [Integer] :offset The offset of first iteration to return, relative to the diff --git a/lib/tracker_api/resources/story.rb b/lib/tracker_api/resources/story.rb index 7c23682..f2e25f8 100644 --- a/lib/tracker_api/resources/story.rb +++ b/lib/tracker_api/resources/story.rb @@ -28,6 +28,11 @@ class Story attribute :task_ids, Array[Integer] attribute :updated_at, DateTime attribute :url, String + + # @return [String] Comma separated list of labels. + def label_list + @label_list ||= labels.collect(&:name).join(',') + end end end end diff --git a/lib/tracker_api/version.rb b/lib/tracker_api/version.rb index cac8915..84090d9 100644 --- a/lib/tracker_api/version.rb +++ b/lib/tracker_api/version.rb @@ -1,3 +1,3 @@ module TrackerApi - VERSION = '0.1.0' + VERSION = '0.2.0' end diff --git a/test/client_test.rb b/test/client_test.rb index 64e2232..5f6754a 100644 --- a/test/client_test.rb +++ b/test/client_test.rb @@ -58,4 +58,27 @@ end end end + + describe '.paginate' do + let(:pt_user) { PT_USER_1 } + let(:client) { TrackerApi::Client.new token: pt_user[:token] } + let(:project_id) { pt_user[:project_id] } + + it 'auto paginates when needed' do + VCR.use_cassette('client: get all stories with pagination', record: :new_episodes) do + project = client.project(project_id) + + # skip pagination with a hugh limit + unpaged_stories = project.stories(limit: 300) + unpaged_stories.wont_be_empty + unpaged_stories.length.must_be :>, 7 + + # force pagination with a small limit + paged_stories = project.stories(limit: 7) + paged_stories.wont_be_empty + paged_stories.length.must_equal unpaged_stories.length + paged_stories.map(&:id).sort.uniq.must_equal unpaged_stories.map(&:id).sort.uniq + end + end + end end diff --git a/test/project_test.rb b/test/project_test.rb index 1273160..5a87e01 100644 --- a/test/project_test.rb +++ b/test/project_test.rb @@ -66,7 +66,7 @@ end describe '.stories' do - it 'can get unscheduled stories (icebox)' do + it 'can get unscheduled stories' do VCR.use_cassette('get unscheduled stories', record: :new_episodes) do stories = project.stories(with_state: :unscheduled) diff --git a/test/vcr/cassettes/client_get_all_stories_with_pagination.json b/test/vcr/cassettes/client_get_all_stories_with_pagination.json new file mode 100644 index 0000000..889b57d --- /dev/null +++ b/test/vcr/cassettes/client_get_all_stories_with_pagination.json @@ -0,0 +1,504 @@ +{"http_interactions": [ + { + "request": { + "method": "get", + "uri": "https://www.pivotaltracker.com/services/v5/projects/1027488", + "body": { + "encoding": "US-ASCII", + "string": "" + }, + "headers": { + "User-Agent": ["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.1.0 Faraday/0.8.9"], + "X-TrackerToken": ["0de3ac29f13082f0c16ed76f3f3f6895"] + } + }, + "response": { + "status": { + "code": 200, + "message": null + }, + "headers": { + "content-type": ["application/json; charset=utf-8"], + "transfer-encoding": ["chunked"], + "connection": ["close"], + "status": ["200"], + "x-powered-by": ["Phusion Passenger (mod_rails/mod_rack) 3.0.14"], + "x-tracker-project-version": ["1"], + "etag": ["\"75439fc13ba781d318c0ac170a0ac828\""], + "x-runtime": ["35"], + "cache-control": ["private, max-age=0, must-revalidate"], + "server": ["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"], + "access-control-allow-origin": ["*"], + "access-control-allow-credentials": ["false"], + "access-control-allow-methods": ["GET, POST, PUT, DELETE, OPTIONS"], + "access-control-allow-headers": ["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"] + }, + "body": { + "encoding": "UTF-8", + "string": "{\n \"enable_incoming_emails\": true,\n \"kind\": \"project\",\n \"bugs_and_chores_are_estimatable\": false,\n \"point_scale\": \"0,1,2,3\",\n \"iteration_length\": 1,\n \"initial_velocity\": 10,\n \"has_google_domain\": false,\n \"velocity_averaged_over\": 3,\n \"enable_tasks\": true,\n \"week_start_day\": \"Monday\",\n \"id\": 1027488,\n \"account_id\": 621384,\n \"time_zone\": {\n \"kind\": \"time_zone\",\n \"olson_name\": \"America/Los_Angeles\",\n \"offset\": \"-07:00\"\n },\n \"version\": 1,\n \"current_iteration_number\": 7,\n \"enable_following\": true,\n \"atom_enabled\": false,\n \"profile_content\": \"This is a demo project, created by Tracker, with example stories for a simple shopping web site.\",\n \"number_of_done_iterations_to_show\": 12,\n \"enable_planned_mode\": false,\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"public\": false,\n \"point_scale_is_custom\": false,\n \"start_time\": \"2014-02-10T08:00:00Z\",\n \"name\": \"My Sample Project\"\n}" + }, + "http_version": null + }, + "recorded_at": "Tue, 25 Mar 2014 06:05:06 GMT" + }, + { + "request": { + "method": "get", + "uri": "https://www.pivotaltracker.com/services/v5/projects/1027488/stories?limit=300", + "body": { + "encoding": "US-ASCII", + "string": "" + }, + "headers": { + "User-Agent": ["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.1.0 Faraday/0.8.9"], + "X-TrackerToken": ["0de3ac29f13082f0c16ed76f3f3f6895"] + } + }, + "response": { + "status": { + "code": 200, + "message": null + }, + "headers": { + "content-type": ["application/json; charset=utf-8"], + "transfer-encoding": ["chunked"], + "connection": ["close"], + "status": ["200"], + "x-powered-by": ["Phusion Passenger (mod_rails/mod_rack) 3.0.14"], + "etag": ["\"3679d9ab1631ba32a28e658d733e3ab4\""], + "x-runtime": ["27"], + "x-tracker-pagination-returned": ["59"], + "cache-control": ["private, max-age=0, must-revalidate"], + "x-tracker-pagination-limit": ["300"], + "x-tracker-pagination-offset": ["0"], + "x-tracker-pagination-total": ["59"], + "x-tracker-project-version": ["1"], + "server": ["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"], + "access-control-allow-origin": ["*"], + "access-control-allow-credentials": ["false"], + "access-control-allow-methods": ["GET, POST, PUT, DELETE, OPTIONS"], + "access-control-allow-headers": ["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"] + }, + "body": { + "encoding": "UTF-8", + "string": "[\n {\n \"current_state\": \"accepted\",\n \"description\": \"We need 2 machines set up\",\n \"id\": 66727974,\n \"labels\": [\n\n ],\n \"project_id\": 1027488,\n \"story_type\": \"chore\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727974\",\n \"name\": \"Setup development environment\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"description\": \"Should be accessible from outside the network, with basic auth\",\n \"id\": 66727976,\n \"labels\": [\n {\n \"id\": 7849078,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"deployment\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"chore\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727976\",\n \"name\": \"Setup demo server\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"description\": \"Admin should be a special user type. We can create the first admin user directly in the DB, but let's encrypt the password.\",\n \"id\": 66727978,\n \"labels\": [\n {\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"admin\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 2,\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727978\",\n \"name\": \"Admin should be able to login\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"description\": \"Product information includes title, description, price, SKU.\",\n \"id\": 66727980,\n \"labels\": [\n {\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"admin\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727980\",\n \"name\": \"Admin should be able to create new product\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"id\": 66727982,\n \"labels\": [\n {\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"admin\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 2,\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727982\",\n \"name\": \"Admin should be able to upload product photo\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"id\": 66727984,\n \"labels\": [\n {\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"admin\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 3,\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727984\",\n \"name\": \"Admin should be able to upload multiple product photos and mark one as the primary\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"id\": 66727986,\n \"labels\": [\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 2,\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727986\",\n \"name\": \"Shopper should see list of products, with primary photo as thumbnail\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"id\": 66727988,\n \"labels\": [\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727988\",\n \"name\": \"Product browsing should be paginated, with 10 products per page\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"id\": 66727990,\n \"labels\": [\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n },\n {\n \"id\": 7849084,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"usability\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 2,\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727990\",\n \"name\": \"Make product browsing pagination AJAXy\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"id\": 66727992,\n \"labels\": [\n {\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"admin\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 3,\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727992\",\n \"name\": \"Admin should be able to import multiple new products from CSV file\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"id\": 66727994,\n \"labels\": [\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"accepted_at\": \"2014-03-02T00:00:00Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727994\",\n \"name\": \"Shopper should be able to click on a product, and see all product details, including photos\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"id\": 66727996,\n \"labels\": [\n {\n \"id\": 7849086,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"cart\"\n },\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"accepted_at\": \"2014-03-02T07:11:05Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727996\",\n \"name\": \"Shopper should be able to add product to shopping cart\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"delivered\",\n \"description\": \"Cart icon in top right corner, with a number indicating how many items in cart\",\n \"id\": 66727998,\n \"labels\": [\n {\n \"id\": 7849086,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"cart\"\n },\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 2,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727998\",\n \"name\": \"Shopper should be able to view contents of shopping cart\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"delivered\",\n \"id\": 66728000,\n \"labels\": [\n {\n \"id\": 7849086,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"cart\"\n },\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728000\",\n \"name\": \"Shopper should be able to remove product from shopping cart\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"finished\",\n \"id\": 66728002,\n \"labels\": [\n {\n \"id\": 7849086,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"cart\"\n },\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728002\",\n \"name\": \"Cart manipulation should be AJAXy\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"started\",\n \"id\": 66728004,\n \"labels\": [\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"bug\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728004\",\n \"name\": \"Some product photos not scaled properly when browsing products\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"description\": \"Prompt for email address and personalized message, send email with product details and message\",\n \"id\": 66728006,\n \"labels\": [\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728006\",\n \"name\": \"Shopper should be able to recommend a product to a friend\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728008,\n \"labels\": [\n {\n \"id\": 7849088,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"search\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"chore\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728008\",\n \"name\": \"configure solr for full text searching\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"description\": \"One search field, search should look through product name, description, and SKU\",\n \"id\": 66728010,\n \"labels\": [\n {\n \"id\": 7849088,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"search\"\n },\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 3,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728010\",\n \"name\": \"Shopper should be able to search for product\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728012,\n \"labels\": [\n\n ],\n \"project_id\": 1027488,\n \"story_type\": \"release\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728012\",\n \"name\": \"Initial demo to investors\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728014,\n \"labels\": [\n {\n \"id\": 7849090,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"checkout\"\n },\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728014\",\n \"name\": \"Shopper should be able to enter credit card information and shipping address\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728016,\n \"labels\": [\n {\n \"id\": 7849090,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"checkout\"\n },\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"chore\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728016\",\n \"name\": \"Integrate with payment gateway\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728018,\n \"labels\": [\n {\n \"id\": 7849090,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"checkout\"\n },\n {\n \"id\": 7849092,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"needs discussion\"\n },\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 3,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728018\",\n \"name\": \"When shopper submits order, authorize total product amount from payment gateway\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728020,\n \"labels\": [\n {\n \"id\": 7849090,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"checkout\"\n },\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728020\",\n \"name\": \"If system fails to authorize payment amount, display error message to shopper\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728022,\n \"labels\": [\n {\n \"id\": 7849090,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"checkout\"\n },\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728022\",\n \"name\": \"If authorization is successful, show order number and confirmation message to shopper\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728024,\n \"labels\": [\n {\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"admin\"\n },\n {\n \"id\": 7849090,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"checkout\"\n },\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728024\",\n \"name\": \"Send notification email of order placement to admin\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728026,\n \"labels\": [\n {\n \"id\": 7849094,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"orders\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 2,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728026\",\n \"name\": \"Shopper should be able to check status of order by entering name and order number\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"description\": \"When checking status of order, shopper should have the option to ask a question. This should send email to admin.\",\n \"id\": 66728028,\n \"labels\": [\n {\n \"id\": 7849094,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"orders\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728028\",\n \"name\": \"Shopper should be able to ask question about order\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728030,\n \"labels\": [\n {\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"admin\"\n },\n {\n \"id\": 7849094,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"orders\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728030\",\n \"name\": \"Admin can review all order questions and send responses to shoppers\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728032,\n \"labels\": [\n {\n \"id\": 7849078,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"deployment\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"chore\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728032\",\n \"name\": \"Set up Engine Yard production environment\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"deadline\": \"2014-03-17T00:00:00Z\",\n \"id\": 66728034,\n \"labels\": [\n\n ],\n \"project_id\": 1027488,\n \"story_type\": \"release\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728034\",\n \"name\": \"Beta launch\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728036,\n \"labels\": [\n {\n \"id\": 7849096,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"signup / signin\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 2,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728036\",\n \"name\": \"Shopper should be able to sign up for an account with email address\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728038,\n \"labels\": [\n {\n \"id\": 7849096,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"signup / signin\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728038\",\n \"name\": \"Shopper should be able to reset forgotten password\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728040,\n \"labels\": [\n {\n \"id\": 7849096,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"signup / signin\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728040\",\n \"name\": \"Shopper should be able to log out\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728042,\n \"labels\": [\n {\n \"id\": 7849096,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"signup / signin\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728042\",\n \"name\": \"When checking out, shopper should have the option to sign in to their account\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"description\": \"Show orders in last 60 days, with link to show older orders\",\n \"id\": 66728044,\n \"labels\": [\n {\n \"id\": 7849098,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"shopper accounts\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728044\",\n \"name\": \"Signed in shopper should be able to review order history\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"description\": \"Credit card numbers should be stored encrypted\",\n \"id\": 66728046,\n \"labels\": [\n {\n \"id\": 7849098,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"shopper accounts\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 2,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728046\",\n \"name\": \"Signed in shopper should be able to save credit card and address information used in checkout\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728048,\n \"labels\": [\n {\n \"id\": 7849098,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"shopper accounts\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728048\",\n \"name\": \"Signed in shopper should be able to save product to favorites\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728050,\n \"labels\": [\n {\n \"id\": 7849098,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"shopper accounts\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728050\",\n \"name\": \"Signed in shopper should be able to review and remove product from favorites\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728052,\n \"labels\": [\n {\n \"id\": 7849100,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"design\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"chore\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728052\",\n \"name\": \"Provide feedback to designer about look/feel of site\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728054,\n \"labels\": [\n {\n \"id\": 7849100,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"design\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 3,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728054\",\n \"name\": \"Apply styling to all shopper facing parts of the site, based on assets from designer\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728056,\n \"labels\": [\n {\n \"id\": 7849102,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"user generated content\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 2,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728056\",\n \"name\": \"Signed in shopper should be able to post product reviews\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728058,\n \"labels\": [\n {\n \"id\": 7849102,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"user generated content\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728058\",\n \"name\": \"Signed in shopper should be able to rate product, by choosing 1-5 stars\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728060,\n \"labels\": [\n {\n \"id\": 7849102,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"user generated content\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728060\",\n \"name\": \"When shopper is browsing products, show average product rating and number of reviews next to each product\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728062,\n \"labels\": [\n {\n \"id\": 7849102,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"user generated content\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728062\",\n \"name\": \"Shopper should be able to read reviews for a product\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728064,\n \"labels\": [\n {\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"admin\"\n },\n {\n \"id\": 7849104,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"featured products\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728064\",\n \"name\": \"Admin should be able to mark a product as featured\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728066,\n \"labels\": [\n {\n \"id\": 7849104,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"featured products\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728066\",\n \"name\": \"Featured products should appear on the site landing page\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728068,\n \"labels\": [\n {\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"admin\"\n },\n {\n \"id\": 7849106,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"blog\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728068\",\n \"name\": \"Admin should be able to create and edit blog articles\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728070,\n \"labels\": [\n {\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"admin\"\n },\n {\n \"id\": 7849106,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"blog\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728070\",\n \"name\": \"Admin should be able to save blog articles in draft mode\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728072,\n \"labels\": [\n {\n \"id\": 7849106,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"blog\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728072\",\n \"name\": \"Published blog articles should appear on the site\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728074,\n \"labels\": [\n {\n \"id\": 7849106,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"name\": \"blog\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728074\",\n \"name\": \"People should be able to subscribe to blog via RSS and Atom\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728076,\n \"labels\": [\n {\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"admin\"\n },\n {\n \"id\": 7849108,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:07Z\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"name\": \"reporting\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728076\",\n \"name\": \"Admin should be able to view monthly sales report\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728078,\n \"labels\": [\n {\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"admin\"\n },\n {\n \"id\": 7849108,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:07Z\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"name\": \"reporting\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728078\",\n \"name\": \"Admin should be able to export orders as CSV file, based on date range and order status\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728080,\n \"labels\": [\n {\n \"id\": 7849078,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"deployment\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"chore\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728080\",\n \"name\": \"Request higher number of production slices, for scaling\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728082,\n \"labels\": [\n\n ],\n \"project_id\": 1027488,\n \"story_type\": \"release\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728082\",\n \"name\": \"Full production launch\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unscheduled\",\n \"id\": 66728084,\n \"labels\": [\n {\n \"id\": 7849110,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:07Z\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"name\": \"ie6\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"bug\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728084\",\n \"name\": \"Product browsing pagination not working in IE6\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unscheduled\",\n \"id\": 66728086,\n \"labels\": [\n\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728086\",\n \"name\": \"Integrate with automated order fullfillment system\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unscheduled\",\n \"id\": 66728088,\n \"labels\": [\n {\n \"id\": 7849112,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:07Z\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"name\": \"epic\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728088\",\n \"name\": \"native iPhone app to allow product browsing and checkout\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unscheduled\",\n \"id\": 66728090,\n \"labels\": [\n\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728090\",\n \"name\": \"Facebook app, allowing users to share favorite products\",\n \"requested_by_id\": 1266314\n }\n]" + }, + "http_version": null + }, + "recorded_at": "Tue, 25 Mar 2014 06:05:06 GMT" + }, + { + "request": { + "method": "get", + "uri": "https://www.pivotaltracker.com/services/v5/projects/1027488/stories?limit=7", + "body": { + "encoding": "US-ASCII", + "string": "" + }, + "headers": { + "User-Agent": ["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.1.0 Faraday/0.8.9"], + "X-TrackerToken": ["0de3ac29f13082f0c16ed76f3f3f6895"] + } + }, + "response": { + "status": { + "code": 200, + "message": null + }, + "headers": { + "content-type": ["application/json; charset=utf-8"], + "transfer-encoding": ["chunked"], + "connection": ["close"], + "status": ["200"], + "x-powered-by": ["Phusion Passenger (mod_rails/mod_rack) 3.0.14"], + "x-tracker-pagination-returned": ["7"], + "x-tracker-project-version": ["1"], + "x-tracker-pagination-limit": ["7"], + "x-tracker-pagination-total": ["59"], + "cache-control": ["private, max-age=0, must-revalidate"], + "x-runtime": ["50"], + "etag": ["\"34cf9994cfb39bdcc50281900320225d\""], + "x-tracker-pagination-offset": ["0"], + "server": ["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"], + "access-control-allow-origin": ["*"], + "access-control-allow-credentials": ["false"], + "access-control-allow-methods": ["GET, POST, PUT, DELETE, OPTIONS"], + "access-control-allow-headers": ["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"] + }, + "body": { + "encoding": "UTF-8", + "string": "[\n {\n \"current_state\": \"accepted\",\n \"description\": \"We need 2 machines set up\",\n \"id\": 66727974,\n \"labels\": [\n\n ],\n \"project_id\": 1027488,\n \"story_type\": \"chore\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727974\",\n \"name\": \"Setup development environment\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"description\": \"Should be accessible from outside the network, with basic auth\",\n \"id\": 66727976,\n \"labels\": [\n {\n \"id\": 7849078,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"deployment\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"chore\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727976\",\n \"name\": \"Setup demo server\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"description\": \"Admin should be a special user type. We can create the first admin user directly in the DB, but let's encrypt the password.\",\n \"id\": 66727978,\n \"labels\": [\n {\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"admin\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 2,\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727978\",\n \"name\": \"Admin should be able to login\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"description\": \"Product information includes title, description, price, SKU.\",\n \"id\": 66727980,\n \"labels\": [\n {\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"admin\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727980\",\n \"name\": \"Admin should be able to create new product\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"id\": 66727982,\n \"labels\": [\n {\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"admin\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 2,\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727982\",\n \"name\": \"Admin should be able to upload product photo\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"id\": 66727984,\n \"labels\": [\n {\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"admin\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 3,\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727984\",\n \"name\": \"Admin should be able to upload multiple product photos and mark one as the primary\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"accepted\",\n \"id\": 66727986,\n \"labels\": [\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 2,\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66727986\",\n \"name\": \"Shopper should see list of products, with primary photo as thumbnail\",\n \"requested_by_id\": 1266314\n }\n]" + }, + "http_version": null + }, + "recorded_at": "Tue, 25 Mar 2014 06:05:07 GMT" + }, + { + "request": { + "method": "get", + "uri": "https://www.pivotaltracker.com/services/v5/projects/1027488/stories?limit=7&offset=7", + "body": { + "encoding": "US-ASCII", + "string": "" + }, + "headers": { + "User-Agent": ["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.1.0 Faraday/0.8.9"], + "X-TrackerToken": ["0de3ac29f13082f0c16ed76f3f3f6895"] + } + }, + "response": { + "status": { + "code": 200, + "message": null + }, + "headers": { + "content-type": ["application/json; charset=utf-8"], + "transfer-encoding": ["chunked"], + "connection": ["close"], + "status": ["200"], + "x-powered-by": ["Phusion Passenger (mod_rails/mod_rack) 3.0.14"], + "x-tracker-pagination-total": ["59"], + "x-tracker-pagination-offset": ["7"], + "cache-control": ["private, max-age=0, must-revalidate"], + "x-runtime": ["46"], + "x-tracker-project-version": ["1"], + "etag": ["\"18cf7f2af27615b3650931cbce340ea6\""], + "x-tracker-pagination-returned": ["7"], + "x-tracker-pagination-limit": ["7"], + "server": ["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"], + "access-control-allow-origin": ["*"], + "access-control-allow-credentials": ["false"], + "access-control-allow-methods": ["GET, POST, PUT, DELETE, OPTIONS"], + "access-control-allow-headers": ["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"] + }, + "body": { + "encoding": "UTF-8", + "string": "[\n {\n \"owner_ids\": [\n\n ],\n \"estimate\": 1,\n \"url\": \"https://www.pivotaltracker.com/story/show/66727988\",\n \"name\": \"Product browsing should be paginated, with 10 products per page\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 66727988,\n \"current_state\": \"accepted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"labels\": [\n {\n \"name\": \"shopping\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-10T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"estimate\": 2,\n \"url\": \"https://www.pivotaltracker.com/story/show/66727990\",\n \"name\": \"Make product browsing pagination AJAXy\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 66727990,\n \"current_state\": \"accepted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"labels\": [\n {\n \"name\": \"shopping\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\"\n },\n {\n \"name\": \"usability\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 7849084,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-10T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"estimate\": 3,\n \"url\": \"https://www.pivotaltracker.com/story/show/66727992\",\n \"name\": \"Admin should be able to import multiple new products from CSV file\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66727992,\n \"current_state\": \"accepted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"labels\": [\n {\n \"name\": \"admin\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-10T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"estimate\": 1,\n \"url\": \"https://www.pivotaltracker.com/story/show/66727994\",\n \"name\": \"Shopper should be able to click on a product, and see all product details, including photos\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66727994,\n \"current_state\": \"accepted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"accepted_at\": \"2014-03-02T00:00:00Z\",\n \"labels\": [\n {\n \"name\": \"shopping\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"estimate\": 1,\n \"url\": \"https://www.pivotaltracker.com/story/show/66727996\",\n \"name\": \"Shopper should be able to add product to shopping cart\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66727996,\n \"current_state\": \"accepted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"accepted_at\": \"2014-03-02T07:11:05Z\",\n \"labels\": [\n {\n \"name\": \"cart\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 7849086,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\"\n },\n {\n \"name\": \"shopping\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"description\": \"Cart icon in top right corner, with a number indicating how many items in cart\",\n \"estimate\": 2,\n \"url\": \"https://www.pivotaltracker.com/story/show/66727998\",\n \"name\": \"Shopper should be able to view contents of shopping cart\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66727998,\n \"current_state\": \"delivered\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"name\": \"cart\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 7849086,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\"\n },\n {\n \"name\": \"shopping\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"estimate\": 1,\n \"url\": \"https://www.pivotaltracker.com/story/show/66728000\",\n \"name\": \"Shopper should be able to remove product from shopping cart\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66728000,\n \"current_state\": \"delivered\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"name\": \"cart\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 7849086,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\"\n },\n {\n \"name\": \"shopping\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n }\n]" + }, + "http_version": null + }, + "recorded_at": "Tue, 25 Mar 2014 06:05:07 GMT" + }, + { + "request": { + "method": "get", + "uri": "https://www.pivotaltracker.com/services/v5/projects/1027488/stories?limit=7&offset=14", + "body": { + "encoding": "US-ASCII", + "string": "" + }, + "headers": { + "User-Agent": ["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.1.0 Faraday/0.8.9"], + "X-TrackerToken": ["0de3ac29f13082f0c16ed76f3f3f6895"] + } + }, + "response": { + "status": { + "code": 200, + "message": null + }, + "headers": { + "content-type": ["application/json; charset=utf-8"], + "transfer-encoding": ["chunked"], + "connection": ["close"], + "status": ["200"], + "x-powered-by": ["Phusion Passenger (mod_rails/mod_rack) 3.0.14"], + "x-tracker-pagination-returned": ["7"], + "x-tracker-project-version": ["1"], + "x-tracker-pagination-limit": ["7"], + "x-tracker-pagination-total": ["59"], + "cache-control": ["private, max-age=0, must-revalidate"], + "x-runtime": ["49"], + "etag": ["\"82a7a6c1a90d23671b1f912ee73593a0\""], + "x-tracker-pagination-offset": ["14"], + "server": ["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"], + "access-control-allow-origin": ["*"], + "access-control-allow-credentials": ["false"], + "access-control-allow-methods": ["GET, POST, PUT, DELETE, OPTIONS"], + "access-control-allow-headers": ["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"] + }, + "body": { + "encoding": "UTF-8", + "string": "[\n {\n \"current_state\": \"finished\",\n \"id\": 66728002,\n \"labels\": [\n {\n \"id\": 7849086,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"cart\"\n },\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728002\",\n \"name\": \"Cart manipulation should be AJAXy\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"started\",\n \"id\": 66728004,\n \"labels\": [\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"bug\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728004\",\n \"name\": \"Some product photos not scaled properly when browsing products\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"description\": \"Prompt for email address and personalized message, send email with product details and message\",\n \"id\": 66728006,\n \"labels\": [\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728006\",\n \"name\": \"Shopper should be able to recommend a product to a friend\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728008,\n \"labels\": [\n {\n \"id\": 7849088,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"search\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"chore\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728008\",\n \"name\": \"configure solr for full text searching\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"description\": \"One search field, search should look through product name, description, and SKU\",\n \"id\": 66728010,\n \"labels\": [\n {\n \"id\": 7849088,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"search\"\n },\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 3,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728010\",\n \"name\": \"Shopper should be able to search for product\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728012,\n \"labels\": [\n\n ],\n \"project_id\": 1027488,\n \"story_type\": \"release\",\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728012\",\n \"name\": \"Initial demo to investors\",\n \"requested_by_id\": 1266314\n },\n {\n \"current_state\": \"unstarted\",\n \"id\": 66728014,\n \"labels\": [\n {\n \"id\": 7849090,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"name\": \"checkout\"\n },\n {\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"name\": \"shopping\"\n }\n ],\n \"project_id\": 1027488,\n \"story_type\": \"feature\",\n \"estimate\": 1,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728014\",\n \"name\": \"Shopper should be able to enter credit card information and shipping address\",\n \"requested_by_id\": 1266314\n }\n]" + }, + "http_version": null + }, + "recorded_at": "Tue, 25 Mar 2014 06:05:08 GMT" + }, + { + "request": { + "method": "get", + "uri": "https://www.pivotaltracker.com/services/v5/projects/1027488/stories?limit=7&offset=21", + "body": { + "encoding": "US-ASCII", + "string": "" + }, + "headers": { + "User-Agent": ["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.1.0 Faraday/0.8.9"], + "X-TrackerToken": ["0de3ac29f13082f0c16ed76f3f3f6895"] + } + }, + "response": { + "status": { + "code": 200, + "message": null + }, + "headers": { + "content-type": ["application/json; charset=utf-8"], + "transfer-encoding": ["chunked"], + "connection": ["close"], + "status": ["200"], + "x-powered-by": ["Phusion Passenger (mod_rails/mod_rack) 3.0.14"], + "x-tracker-pagination-total": ["59"], + "x-tracker-pagination-offset": ["21"], + "cache-control": ["private, max-age=0, must-revalidate"], + "x-runtime": ["407"], + "x-tracker-project-version": ["1"], + "etag": ["\"860e7c2ee317db5995ffcd669a94ecdb\""], + "x-tracker-pagination-returned": ["7"], + "x-tracker-pagination-limit": ["7"], + "server": ["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"], + "access-control-allow-origin": ["*"], + "access-control-allow-credentials": ["false"], + "access-control-allow-methods": ["GET, POST, PUT, DELETE, OPTIONS"], + "access-control-allow-headers": ["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"] + }, + "body": { + "encoding": "UTF-8", + "string": "[\n {\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728016\",\n \"name\": \"Integrate with payment gateway\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66728016,\n \"current_state\": \"unstarted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"name\": \"checkout\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 7849090,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\"\n },\n {\n \"name\": \"shopping\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"chore\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"estimate\": 3,\n \"url\": \"https://www.pivotaltracker.com/story/show/66728018\",\n \"name\": \"When shopper submits order, authorize total product amount from payment gateway\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66728018,\n \"current_state\": \"unstarted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"name\": \"checkout\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 7849090,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\"\n },\n {\n \"name\": \"needs discussion\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 7849092,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\"\n },\n {\n \"name\": \"shopping\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"estimate\": 1,\n \"url\": \"https://www.pivotaltracker.com/story/show/66728020\",\n \"name\": \"If system fails to authorize payment amount, display error message to shopper\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66728020,\n \"current_state\": \"unstarted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"name\": \"checkout\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 7849090,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\"\n },\n {\n \"name\": \"shopping\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"estimate\": 1,\n \"url\": \"https://www.pivotaltracker.com/story/show/66728022\",\n \"name\": \"If authorization is successful, show order number and confirmation message to shopper\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66728022,\n \"current_state\": \"unstarted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"name\": \"checkout\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 7849090,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\"\n },\n {\n \"name\": \"shopping\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"estimate\": 1,\n \"url\": \"https://www.pivotaltracker.com/story/show/66728024\",\n \"name\": \"Send notification email of order placement to admin\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66728024,\n \"current_state\": \"unstarted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\"\n },\n {\n \"name\": \"checkout\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 7849090,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\"\n },\n {\n \"name\": \"shopping\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849082,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"estimate\": 2,\n \"url\": \"https://www.pivotaltracker.com/story/show/66728026\",\n \"name\": \"Shopper should be able to check status of order by entering name and order number\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66728026,\n \"current_state\": \"unstarted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"name\": \"orders\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 7849094,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"description\": \"When checking status of order, shopper should have the option to ask a question. This should send email to admin.\",\n \"estimate\": 1,\n \"url\": \"https://www.pivotaltracker.com/story/show/66728028\",\n \"name\": \"Shopper should be able to ask question about order\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66728028,\n \"current_state\": \"unstarted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"name\": \"orders\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 7849094,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n }\n]" + }, + "http_version": null + }, + "recorded_at": "Tue, 25 Mar 2014 06:05:09 GMT" + }, + { + "request": { + "method": "get", + "uri": "https://www.pivotaltracker.com/services/v5/projects/1027488/stories?limit=7&offset=28", + "body": { + "encoding": "US-ASCII", + "string": "" + }, + "headers": { + "User-Agent": ["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.1.0 Faraday/0.8.9"], + "X-TrackerToken": ["0de3ac29f13082f0c16ed76f3f3f6895"] + } + }, + "response": { + "status": { + "code": 200, + "message": null + }, + "headers": { + "content-type": ["application/json; charset=utf-8"], + "transfer-encoding": ["chunked"], + "connection": ["close"], + "status": ["200"], + "x-powered-by": ["Phusion Passenger (mod_rails/mod_rack) 3.0.14"], + "x-tracker-pagination-total": ["59"], + "x-tracker-pagination-offset": ["28"], + "cache-control": ["private, max-age=0, must-revalidate"], + "x-runtime": ["408"], + "x-tracker-project-version": ["1"], + "etag": ["\"980f499a5f21851c2967bf71ac99f307\""], + "x-tracker-pagination-returned": ["7"], + "x-tracker-pagination-limit": ["7"], + "server": ["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"], + "access-control-allow-origin": ["*"], + "access-control-allow-credentials": ["false"], + "access-control-allow-methods": ["GET, POST, PUT, DELETE, OPTIONS"], + "access-control-allow-headers": ["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"] + }, + "body": { + "encoding": "UTF-8", + "string": "[\n {\n \"owner_ids\": [\n\n ],\n \"estimate\": 1,\n \"url\": \"https://www.pivotaltracker.com/story/show/66728030\",\n \"name\": \"Admin can review all order questions and send responses to shoppers\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66728030,\n \"current_state\": \"unstarted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849080,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\"\n },\n {\n \"name\": \"orders\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 7849094,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728032\",\n \"name\": \"Set up Engine Yard production environment\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"id\": 66728032,\n \"current_state\": \"unstarted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"name\": \"deployment\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849078,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"chore\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728034\",\n \"name\": \"Beta launch\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"id\": 66728034,\n \"current_state\": \"unstarted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"deadline\": \"2014-03-17T00:00:00Z\",\n \"labels\": [\n\n ],\n \"story_type\": \"release\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"estimate\": 2,\n \"url\": \"https://www.pivotaltracker.com/story/show/66728036\",\n \"name\": \"Shopper should be able to sign up for an account with email address\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"id\": 66728036,\n \"current_state\": \"unstarted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"name\": \"signup / signin\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"id\": 7849096,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"estimate\": 1,\n \"url\": \"https://www.pivotaltracker.com/story/show/66728038\",\n \"name\": \"Shopper should be able to reset forgotten password\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"id\": 66728038,\n \"current_state\": \"unstarted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"name\": \"signup / signin\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"id\": 7849096,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"estimate\": 1,\n \"url\": \"https://www.pivotaltracker.com/story/show/66728040\",\n \"name\": \"Shopper should be able to log out\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"id\": 66728040,\n \"current_state\": \"unstarted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"name\": \"signup / signin\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"id\": 7849096,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n },\n {\n \"owner_ids\": [\n\n ],\n \"estimate\": 1,\n \"url\": \"https://www.pivotaltracker.com/story/show/66728042\",\n \"name\": \"When checking out, shopper should have the option to sign in to their account\",\n \"requested_by_id\": 1266314,\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"id\": 66728042,\n \"current_state\": \"unstarted\",\n \"kind\": \"story\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"name\": \"signup / signin\",\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"id\": 7849096,\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:06Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"created_at\": \"2014-02-17T00:00:00Z\"\n }\n]" + }, + "http_version": null + }, + "recorded_at": "Tue, 25 Mar 2014 06:05:10 GMT" + }, + { + "request": { + "method": "get", + "uri": "https://www.pivotaltracker.com/services/v5/projects/1027488/stories?limit=7&offset=35", + "body": { + "encoding": "US-ASCII", + "string": "" + }, + "headers": { + "User-Agent": ["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.1.0 Faraday/0.8.9"], + "X-TrackerToken": ["0de3ac29f13082f0c16ed76f3f3f6895"] + } + }, + "response": { + "status": { + "code": 200, + "message": null + }, + "headers": { + "content-type": ["application/json; charset=utf-8"], + "transfer-encoding": ["chunked"], + "connection": ["close"], + "status": ["200"], + "x-powered-by": ["Phusion Passenger (mod_rails/mod_rack) 3.0.14"], + "etag": ["\"d9cc21a623bd1466f97b36685c65ee50\""], + "x-runtime": ["47"], + "x-tracker-pagination-returned": ["7"], + "cache-control": ["private, max-age=0, must-revalidate"], + "x-tracker-pagination-limit": ["7"], + "x-tracker-pagination-offset": ["35"], + "x-tracker-pagination-total": ["59"], + "x-tracker-project-version": ["1"], + "server": ["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"], + "access-control-allow-origin": ["*"], + "access-control-allow-credentials": ["false"], + "access-control-allow-methods": ["GET, POST, PUT, DELETE, OPTIONS"], + "access-control-allow-headers": ["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"] + }, + "body": { + "encoding": "UTF-8", + "string": "[\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"project_id\": 1027488,\n \"id\": 7849098,\n \"name\": \"shopper accounts\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"estimate\": 1,\n \"id\": 66728044,\n \"description\": \"Show orders in last 60 days, with link to show older orders\",\n \"name\": \"Signed in shopper should be able to review order history\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728044\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"project_id\": 1027488,\n \"id\": 7849098,\n \"name\": \"shopper accounts\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"estimate\": 2,\n \"id\": 66728046,\n \"description\": \"Credit card numbers should be stored encrypted\",\n \"name\": \"Signed in shopper should be able to save credit card and address information used in checkout\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728046\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"project_id\": 1027488,\n \"id\": 7849098,\n \"name\": \"shopper accounts\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"estimate\": 1,\n \"id\": 66728048,\n \"name\": \"Signed in shopper should be able to save product to favorites\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728048\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"project_id\": 1027488,\n \"id\": 7849098,\n \"name\": \"shopper accounts\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"estimate\": 1,\n \"id\": 66728050,\n \"name\": \"Signed in shopper should be able to review and remove product from favorites\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728050\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"project_id\": 1027488,\n \"id\": 7849100,\n \"name\": \"design\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"chore\",\n \"requested_by_id\": 1266314,\n \"id\": 66728052,\n \"name\": \"Provide feedback to designer about look/feel of site\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728052\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"project_id\": 1027488,\n \"id\": 7849100,\n \"name\": \"design\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"estimate\": 3,\n \"id\": 66728054,\n \"name\": \"Apply styling to all shopper facing parts of the site, based on assets from designer\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728054\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"project_id\": 1027488,\n \"id\": 7849102,\n \"name\": \"user generated content\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"estimate\": 2,\n \"id\": 66728056,\n \"name\": \"Signed in shopper should be able to post product reviews\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728056\",\n \"kind\": \"story\"\n }\n]" + }, + "http_version": null + }, + "recorded_at": "Tue, 25 Mar 2014 06:05:10 GMT" + }, + { + "request": { + "method": "get", + "uri": "https://www.pivotaltracker.com/services/v5/projects/1027488/stories?limit=7&offset=42", + "body": { + "encoding": "US-ASCII", + "string": "" + }, + "headers": { + "User-Agent": ["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.1.0 Faraday/0.8.9"], + "X-TrackerToken": ["0de3ac29f13082f0c16ed76f3f3f6895"] + } + }, + "response": { + "status": { + "code": 200, + "message": null + }, + "headers": { + "content-type": ["application/json; charset=utf-8"], + "transfer-encoding": ["chunked"], + "connection": ["close"], + "status": ["200"], + "x-powered-by": ["Phusion Passenger (mod_rails/mod_rack) 3.0.14"], + "etag": ["\"493865e3b898eeee19f712cd4063ba85\""], + "x-runtime": ["379"], + "x-tracker-pagination-returned": ["7"], + "cache-control": ["private, max-age=0, must-revalidate"], + "x-tracker-pagination-limit": ["7"], + "x-tracker-pagination-offset": ["42"], + "x-tracker-pagination-total": ["59"], + "x-tracker-project-version": ["1"], + "server": ["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"], + "access-control-allow-origin": ["*"], + "access-control-allow-credentials": ["false"], + "access-control-allow-methods": ["GET, POST, PUT, DELETE, OPTIONS"], + "access-control-allow-headers": ["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"] + }, + "body": { + "encoding": "UTF-8", + "string": "[\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"project_id\": 1027488,\n \"id\": 7849102,\n \"name\": \"user generated content\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"estimate\": 1,\n \"id\": 66728058,\n \"name\": \"Signed in shopper should be able to rate product, by choosing 1-5 stars\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728058\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"project_id\": 1027488,\n \"id\": 7849102,\n \"name\": \"user generated content\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"estimate\": 1,\n \"id\": 66728060,\n \"name\": \"When shopper is browsing products, show average product rating and number of reviews next to each product\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728060\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"project_id\": 1027488,\n \"id\": 7849102,\n \"name\": \"user generated content\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"estimate\": 1,\n \"id\": 66728062,\n \"name\": \"Shopper should be able to read reviews for a product\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728062\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"project_id\": 1027488,\n \"id\": 7849080,\n \"name\": \"admin\",\n \"kind\": \"label\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"project_id\": 1027488,\n \"id\": 7849104,\n \"name\": \"featured products\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"id\": 66728064,\n \"name\": \"Admin should be able to mark a product as featured\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728064\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"project_id\": 1027488,\n \"id\": 7849104,\n \"name\": \"featured products\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"id\": 66728066,\n \"name\": \"Featured products should appear on the site landing page\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728066\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"project_id\": 1027488,\n \"id\": 7849080,\n \"name\": \"admin\",\n \"kind\": \"label\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"project_id\": 1027488,\n \"id\": 7849106,\n \"name\": \"blog\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"id\": 66728068,\n \"name\": \"Admin should be able to create and edit blog articles\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728068\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"project_id\": 1027488,\n \"id\": 7849080,\n \"name\": \"admin\",\n \"kind\": \"label\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"project_id\": 1027488,\n \"id\": 7849106,\n \"name\": \"blog\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"id\": 66728070,\n \"name\": \"Admin should be able to save blog articles in draft mode\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728070\",\n \"kind\": \"story\"\n }\n]" + }, + "http_version": null + }, + "recorded_at": "Tue, 25 Mar 2014 06:05:11 GMT" + }, + { + "request": { + "method": "get", + "uri": "https://www.pivotaltracker.com/services/v5/projects/1027488/stories?limit=7&offset=49", + "body": { + "encoding": "US-ASCII", + "string": "" + }, + "headers": { + "User-Agent": ["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.1.0 Faraday/0.8.9"], + "X-TrackerToken": ["0de3ac29f13082f0c16ed76f3f3f6895"] + } + }, + "response": { + "status": { + "code": 200, + "message": null + }, + "headers": { + "content-type": ["application/json; charset=utf-8"], + "transfer-encoding": ["chunked"], + "connection": ["close"], + "status": ["200"], + "x-powered-by": ["Phusion Passenger (mod_rails/mod_rack) 3.0.14"], + "etag": ["\"fe1f417f0e128f3d564ade1a4fec7988\""], + "x-runtime": ["57"], + "x-tracker-pagination-returned": ["7"], + "cache-control": ["private, max-age=0, must-revalidate"], + "x-tracker-pagination-limit": ["7"], + "x-tracker-pagination-offset": ["49"], + "x-tracker-pagination-total": ["59"], + "x-tracker-project-version": ["1"], + "server": ["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"], + "access-control-allow-origin": ["*"], + "access-control-allow-credentials": ["false"], + "access-control-allow-methods": ["GET, POST, PUT, DELETE, OPTIONS"], + "access-control-allow-headers": ["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"] + }, + "body": { + "encoding": "UTF-8", + "string": "[\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"project_id\": 1027488,\n \"id\": 7849106,\n \"name\": \"blog\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"id\": 66728072,\n \"name\": \"Published blog articles should appear on the site\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728072\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-03-02T07:11:06Z\",\n \"project_id\": 1027488,\n \"id\": 7849106,\n \"name\": \"blog\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"id\": 66728074,\n \"name\": \"People should be able to subscribe to blog via RSS and Atom\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728074\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:06Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"project_id\": 1027488,\n \"id\": 7849080,\n \"name\": \"admin\",\n \"kind\": \"label\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"created_at\": \"2014-03-02T07:11:07Z\",\n \"project_id\": 1027488,\n \"id\": 7849108,\n \"name\": \"reporting\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"id\": 66728076,\n \"name\": \"Admin should be able to view monthly sales report\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728076\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"project_id\": 1027488,\n \"id\": 7849080,\n \"name\": \"admin\",\n \"kind\": \"label\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"created_at\": \"2014-03-02T07:11:07Z\",\n \"project_id\": 1027488,\n \"id\": 7849108,\n \"name\": \"reporting\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"id\": 66728078,\n \"name\": \"Admin should be able to export orders as CSV file, based on date range and order status\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728078\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"project_id\": 1027488,\n \"id\": 7849078,\n \"name\": \"deployment\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"chore\",\n \"requested_by_id\": 1266314,\n \"id\": 66728080,\n \"name\": \"Request higher number of production slices, for scaling\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728080\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n\n ],\n \"current_state\": \"unstarted\",\n \"story_type\": \"release\",\n \"requested_by_id\": 1266314,\n \"id\": 66728082,\n \"name\": \"Full production launch\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728082\",\n \"kind\": \"story\"\n },\n {\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"project_id\": 1027488,\n \"labels\": [\n {\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"created_at\": \"2014-03-02T07:11:07Z\",\n \"project_id\": 1027488,\n \"id\": 7849110,\n \"name\": \"ie6\",\n \"kind\": \"label\"\n }\n ],\n \"current_state\": \"unscheduled\",\n \"story_type\": \"bug\",\n \"requested_by_id\": 1266314,\n \"id\": 66728084,\n \"name\": \"Product browsing pagination not working in IE6\",\n \"owner_ids\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728084\",\n \"kind\": \"story\"\n }\n]" + }, + "http_version": null + }, + "recorded_at": "Tue, 25 Mar 2014 06:05:11 GMT" + }, + { + "request": { + "method": "get", + "uri": "https://www.pivotaltracker.com/services/v5/projects/1027488/stories?limit=7&offset=56", + "body": { + "encoding": "US-ASCII", + "string": "" + }, + "headers": { + "User-Agent": ["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.1.0 Faraday/0.8.9"], + "X-TrackerToken": ["0de3ac29f13082f0c16ed76f3f3f6895"] + } + }, + "response": { + "status": { + "code": 200, + "message": null + }, + "headers": { + "content-type": ["application/json; charset=utf-8"], + "transfer-encoding": ["chunked"], + "connection": ["close"], + "status": ["200"], + "x-powered-by": ["Phusion Passenger (mod_rails/mod_rack) 3.0.14"], + "x-tracker-project-version": ["1"], + "etag": ["\"3816bdd94982aec060f7928137f9446d\""], + "x-tracker-pagination-total": ["59"], + "x-runtime": ["45"], + "x-tracker-pagination-returned": ["3"], + "x-tracker-pagination-offset": ["56"], + "cache-control": ["private, max-age=0, must-revalidate"], + "x-tracker-pagination-limit": ["7"], + "server": ["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"], + "access-control-allow-origin": ["*"], + "access-control-allow-credentials": ["false"], + "access-control-allow-methods": ["GET, POST, PUT, DELETE, OPTIONS"], + "access-control-allow-headers": ["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"] + }, + "body": { + "encoding": "UTF-8", + "string": "[\n {\n \"project_id\": 1027488,\n \"kind\": \"story\",\n \"owner_ids\": [\n\n ],\n \"requested_by_id\": 1266314,\n \"id\": 66728086,\n \"labels\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728086\",\n \"story_type\": \"feature\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"current_state\": \"unscheduled\",\n \"name\": \"Integrate with automated order fullfillment system\"\n },\n {\n \"project_id\": 1027488,\n \"kind\": \"story\",\n \"owner_ids\": [\n\n ],\n \"requested_by_id\": 1266314,\n \"id\": 66728088,\n \"labels\": [\n {\n \"kind\": \"label\",\n \"project_id\": 1027488,\n \"id\": 7849112,\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"created_at\": \"2014-03-02T07:11:07Z\",\n \"name\": \"epic\"\n }\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728088\",\n \"story_type\": \"feature\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"current_state\": \"unscheduled\",\n \"name\": \"native iPhone app to allow product browsing and checkout\"\n },\n {\n \"project_id\": 1027488,\n \"kind\": \"story\",\n \"owner_ids\": [\n\n ],\n \"requested_by_id\": 1266314,\n \"id\": 66728090,\n \"labels\": [\n\n ],\n \"url\": \"https://www.pivotaltracker.com/story/show/66728090\",\n \"story_type\": \"feature\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"current_state\": \"unscheduled\",\n \"name\": \"Facebook app, allowing users to share favorite products\"\n }\n]" + }, + "http_version": null + }, + "recorded_at": "Tue, 25 Mar 2014 06:05:11 GMT" + } +], "recorded_with": "VCR 2.8.0"} diff --git a/test/vcr/cassettes/get_done_iterations.json b/test/vcr/cassettes/get_done_iterations.json index 6b2ddb2..413ebd9 100644 --- a/test/vcr/cassettes/get_done_iterations.json +++ b/test/vcr/cassettes/get_done_iterations.json @@ -1 +1 @@ -{"http_interactions":[{"request":{"method":"get","uri":"https://www.pivotaltracker.com/services/v5/projects/1027488/iterations?scope=done&offset=-12","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.0.1 Faraday/0.8.9"],"X-TrackerToken":["0de3ac29f13082f0c16ed76f3f3f6895"]}},"response":{"status":{"code":200,"message":null},"headers":{"content-type":["application/json; charset=utf-8"],"transfer-encoding":["chunked"],"connection":["close"],"status":["200"],"x-powered-by":["Phusion Passenger (mod_rails/mod_rack) 3.0.14"],"x-tracker-project-version":["1"],"cache-control":["private, max-age=0, must-revalidate"],"x-tracker-pagination-offset":["-12"],"etag":["\"5f632dec8cf809f0b82e3f7f5d91a801\""],"x-runtime":["522"],"x-tracker-pagination-returned":["5"],"x-tracker-pagination-limit":["10"],"x-tracker-pagination-total":["5"],"server":["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"],"access-control-allow-origin":["*"],"access-control-allow-credentials":["false"],"access-control-allow-methods":["GET, POST, PUT, DELETE, OPTIONS"],"access-control-allow-headers":["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"]},"body":{"encoding":"UTF-8","string":"[\n {\n \"number\": 1,\n \"kind\": \"iteration\",\n \"finish\": \"2014-02-17T08:00:00Z\",\n \"project_id\": 1027488,\n \"start\": \"2014-02-10T08:00:00Z\",\n \"stories\": [\n {\n \"name\": \"Setup development environment\",\n \"kind\": \"story\",\n \"description\": \"We need 2 machines set up\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"id\": 66727974,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"requested_by_id\": 1266314,\n \"labels\": [\n\n ],\n \"story_type\": \"chore\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727974\"\n },\n {\n \"name\": \"Setup demo server\",\n \"kind\": \"story\",\n \"description\": \"Should be accessible from outside the network, with basic auth\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"id\": 66727976,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"deployment\",\n \"kind\": \"label\",\n \"id\": 7849078,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"chore\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727976\"\n },\n {\n \"name\": \"Admin should be able to login\",\n \"kind\": \"story\",\n \"description\": \"Admin should be a special user type. We can create the first admin user directly in the DB, but let's encrypt the password.\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"id\": 66727978,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 2,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"kind\": \"label\",\n \"id\": 7849080,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727978\"\n },\n {\n \"name\": \"Admin should be able to create new product\",\n \"kind\": \"story\",\n \"description\": \"Product information includes title, description, price, SKU.\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"id\": 66727980,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 1,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"kind\": \"label\",\n \"id\": 7849080,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727980\"\n },\n {\n \"name\": \"Admin should be able to upload product photo\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"id\": 66727982,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 2,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"kind\": \"label\",\n \"id\": 7849080,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727982\"\n }\n ],\n \"team_strength\": 1\n },\n {\n \"number\": 2,\n \"kind\": \"iteration\",\n \"finish\": \"2014-02-24T08:00:00Z\",\n \"project_id\": 1027488,\n \"start\": \"2014-02-17T08:00:00Z\",\n \"stories\": [\n {\n \"name\": \"Admin should be able to upload multiple product photos and mark one as the primary\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"id\": 66727984,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 3,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"kind\": \"label\",\n \"id\": 7849080,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727984\"\n },\n {\n \"name\": \"Shopper should see list of products, with primary photo as thumbnail\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"id\": 66727986,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 2,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"id\": 7849082,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727986\"\n },\n {\n \"name\": \"Product browsing should be paginated, with 10 products per page\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"id\": 66727988,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 1,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"id\": 7849082,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727988\"\n },\n {\n \"name\": \"Make product browsing pagination AJAXy\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"id\": 66727990,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 2,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"id\": 7849082,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n },\n {\n \"name\": \"usability\",\n \"kind\": \"label\",\n \"id\": 7849084,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727990\"\n },\n {\n \"name\": \"Admin should be able to import multiple new products from CSV file\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"id\": 66727992,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"estimate\": 3,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"kind\": \"label\",\n \"id\": 7849080,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727992\"\n }\n ],\n \"team_strength\": 1\n },\n {\n \"number\": 3,\n \"kind\": \"iteration\",\n \"finish\": \"2014-03-03T08:00:00Z\",\n \"project_id\": 1027488,\n \"start\": \"2014-02-24T08:00:00Z\",\n \"stories\": [\n {\n \"name\": \"Shopper should be able to click on a product, and see all product details, including photos\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-03-02T00:00:00Z\",\n \"id\": 66727994,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"estimate\": 1,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"id\": 7849082,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727994\"\n },\n {\n \"name\": \"Shopper should be able to add product to shopping cart\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66727996,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"estimate\": 1,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"cart\",\n \"kind\": \"label\",\n \"id\": 7849086,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\"\n },\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"id\": 7849082,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727996\"\n }\n ],\n \"team_strength\": 1\n },\n {\n \"number\": 4,\n \"kind\": \"iteration\",\n \"finish\": \"2014-03-10T07:00:00Z\",\n \"project_id\": 1027488,\n \"start\": \"2014-03-03T08:00:00Z\",\n \"stories\": [\n\n ],\n \"team_strength\": 1\n },\n {\n \"number\": 5,\n \"kind\": \"iteration\",\n \"finish\": \"2014-03-17T07:00:00Z\",\n \"project_id\": 1027488,\n \"start\": \"2014-03-10T07:00:00Z\",\n \"stories\": [\n\n ],\n \"team_strength\": 1\n }\n]"},"http_version":null},"recorded_at":"Sun, 23 Mar 2014 06:28:29 GMT"}],"recorded_with":"VCR 2.8.0"} \ No newline at end of file +{"http_interactions":[{"request":{"method":"get","uri":"https://www.pivotaltracker.com/services/v5/projects/1027488/iterations?scope=done&offset=-12","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.0.1 Faraday/0.8.9"],"X-TrackerToken":["0de3ac29f13082f0c16ed76f3f3f6895"]}},"response":{"status":{"code":200,"message":null},"headers":{"content-type":["application/json; charset=utf-8"],"transfer-encoding":["chunked"],"connection":["close"],"status":["200"],"x-powered-by":["Phusion Passenger (mod_rails/mod_rack) 3.0.14"],"x-tracker-project-version":["1"],"cache-control":["private, max-age=0, must-revalidate"],"x-tracker-pagination-offset":["-12"],"etag":["\"5f632dec8cf809f0b82e3f7f5d91a801\""],"x-runtime":["522"],"x-tracker-pagination-returned":["5"],"x-tracker-pagination-limit":["10"],"x-tracker-pagination-total":["5"],"server":["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"],"access-control-allow-origin":["*"],"access-control-allow-credentials":["false"],"access-control-allow-methods":["GET, POST, PUT, DELETE, OPTIONS"],"access-control-allow-headers":["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"]},"body":{"encoding":"UTF-8","string":"[\n {\n \"number\": 1,\n \"kind\": \"iteration\",\n \"finish\": \"2014-02-17T08:00:00Z\",\n \"project_id\": 1027488,\n \"start\": \"2014-02-10T08:00:00Z\",\n \"stories\": [\n {\n \"name\": \"Setup development environment\",\n \"kind\": \"story\",\n \"description\": \"We need 2 machines set up\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"id\": 66727974,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"requested_by_id\": 1266314,\n \"labels\": [\n\n ],\n \"story_type\": \"chore\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727974\"\n },\n {\n \"name\": \"Setup demo server\",\n \"kind\": \"story\",\n \"description\": \"Should be accessible from outside the network, with basic auth\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"id\": 66727976,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"deployment\",\n \"kind\": \"label\",\n \"id\": 7849078,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"chore\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727976\"\n },\n {\n \"name\": \"Admin should be able to login\",\n \"kind\": \"story\",\n \"description\": \"Admin should be a special user type. We can create the first admin user directly in the DB, but let's encrypt the password.\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"id\": 66727978,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 2,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"kind\": \"label\",\n \"id\": 7849080,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727978\"\n },\n {\n \"name\": \"Admin should be able to create new product\",\n \"kind\": \"story\",\n \"description\": \"Product information includes title, description, price, SKU.\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"id\": 66727980,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 1,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"kind\": \"label\",\n \"id\": 7849080,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727980\"\n },\n {\n \"name\": \"Admin should be able to upload product photo\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"id\": 66727982,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 2,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"kind\": \"label\",\n \"id\": 7849080,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727982\"\n }\n ],\n \"team_strength\": 1\n },\n {\n \"number\": 2,\n \"kind\": \"iteration\",\n \"finish\": \"2014-02-24T08:00:00Z\",\n \"project_id\": 1027488,\n \"start\": \"2014-02-17T08:00:00Z\",\n \"stories\": [\n {\n \"name\": \"Admin should be able to upload multiple product photos and mark one as the primary\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"id\": 66727984,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 3,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"kind\": \"label\",\n \"id\": 7849080,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727984\"\n },\n {\n \"name\": \"Shopper should see list of products, with primary photo as thumbnail\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"id\": 66727986,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 2,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"id\": 7849082,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727986\"\n },\n {\n \"name\": \"Product browsing should be paginated, with 10 products per page\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"id\": 66727988,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 1,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"id\": 7849082,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727988\"\n },\n {\n \"name\": \"Make product browsing pagination AJAXy\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"id\": 66727990,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 2,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"id\": 7849082,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n },\n {\n \"name\": \"usability\",\n \"kind\": \"label\",\n \"id\": 7849084,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727990\"\n },\n {\n \"name\": \"Admin should be able to import multiple new products from CSV file\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"id\": 66727992,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"estimate\": 3,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"kind\": \"label\",\n \"id\": 7849080,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727992\"\n }\n ],\n \"team_strength\": 1\n },\n {\n \"number\": 3,\n \"kind\": \"iteration\",\n \"finish\": \"2014-03-03T08:00:00Z\",\n \"project_id\": 1027488,\n \"start\": \"2014-02-24T08:00:00Z\",\n \"stories\": [\n {\n \"name\": \"Shopper should be able to click on a product, and see all product details, including photos\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-03-02T00:00:00Z\",\n \"id\": 66727994,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"estimate\": 1,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"id\": 7849082,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727994\"\n },\n {\n \"name\": \"Shopper should be able to add product to shopping cart\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66727996,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"estimate\": 1,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"cart\",\n \"kind\": \"label\",\n \"id\": 7849086,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\"\n },\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"id\": 7849082,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727996\"\n }\n ],\n \"team_strength\": 1\n },\n {\n \"number\": 4,\n \"kind\": \"iteration\",\n \"finish\": \"2014-03-10T07:00:00Z\",\n \"project_id\": 1027488,\n \"start\": \"2014-03-03T08:00:00Z\",\n \"stories\": [\n\n ],\n \"team_strength\": 1\n },\n {\n \"number\": 5,\n \"kind\": \"iteration\",\n \"finish\": \"2014-03-17T07:00:00Z\",\n \"project_id\": 1027488,\n \"start\": \"2014-03-10T07:00:00Z\",\n \"stories\": [\n\n ],\n \"team_strength\": 1\n }\n]"},"http_version":null},"recorded_at":"Sun, 23 Mar 2014 06:28:29 GMT"},{"request":{"method":"get","uri":"https://www.pivotaltracker.com/services/v5/projects/1027488/iterations?scope=done&offset=-2&limit=10","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.2.0 Faraday/0.8.9"],"X-TrackerToken":["0de3ac29f13082f0c16ed76f3f3f6895"]}},"response":{"status":{"code":200,"message":null},"headers":{"content-type":["application/json; charset=utf-8"],"transfer-encoding":["chunked"],"connection":["close"],"status":["200"],"x-powered-by":["Phusion Passenger (mod_rails/mod_rack) 3.0.14"],"x-tracker-project-version":["1"],"etag":["\"51a5cfa5e8178d503dae6cbebd78e856\""],"x-tracker-pagination-total":["6"],"x-runtime":["106"],"x-tracker-pagination-returned":["2"],"x-tracker-pagination-offset":["-2"],"cache-control":["private, max-age=0, must-revalidate"],"x-tracker-pagination-limit":["10"],"server":["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"],"access-control-allow-origin":["*"],"access-control-allow-credentials":["false"],"access-control-allow-methods":["GET, POST, PUT, DELETE, OPTIONS"],"access-control-allow-headers":["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"]},"body":{"encoding":"UTF-8","string":"[\n {\n \"project_id\": 1027488,\n \"kind\": \"iteration\",\n \"start\": \"2014-03-10T07:00:00Z\",\n \"team_strength\": 1,\n \"finish\": \"2014-03-17T07:00:00Z\",\n \"number\": 5,\n \"stories\": [\n\n ]\n },\n {\n \"project_id\": 1027488,\n \"kind\": \"iteration\",\n \"start\": \"2014-03-17T07:00:00Z\",\n \"team_strength\": 1,\n \"finish\": \"2014-03-24T07:00:00Z\",\n \"number\": 6,\n \"stories\": [\n\n ]\n }\n]"},"http_version":null},"recorded_at":"Tue, 25 Mar 2014 06:18:53 GMT"}],"recorded_with":"VCR 2.8.0"} \ No newline at end of file diff --git a/tracker_api.gemspec b/tracker_api.gemspec index 8c852ec..58d0579 100644 --- a/tracker_api.gemspec +++ b/tracker_api.gemspec @@ -30,7 +30,7 @@ Gem::Specification.new do |spec| spec.add_dependency 'addressable' spec.add_dependency 'virtus' - spec.add_dependency 'faraday' + spec.add_dependency 'faraday', '~> 0.8.0' spec.add_dependency 'faraday_middleware' # spec.add_dependency 'excon' end