quaderno 1.3.1 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +7 -7
  3. data/VERSION +1 -1
  4. data/build_install.sh +1 -1
  5. data/changelog.md +4 -0
  6. data/lib/quaderno-ruby/base.rb +21 -17
  7. data/lib/quaderno-ruby/behavior/crud.rb +5 -5
  8. data/lib/quaderno-ruby/behavior/deliver.rb +1 -1
  9. data/lib/quaderno-ruby/behavior/payment.rb +2 -2
  10. data/quaderno.gemspec +3 -3
  11. data/test/fixtures/.DS_Store +0 -0
  12. data/test/fixtures/quaderno_cassettes/all_contacts.yml +15 -27
  13. data/test/fixtures/quaderno_cassettes/all_estimates.yml +19 -12
  14. data/test/fixtures/quaderno_cassettes/all_expenses.yml +17 -13
  15. data/test/fixtures/quaderno_cassettes/all_invoices.yml +18 -91
  16. data/test/fixtures/quaderno_cassettes/all_items.yml +10 -10
  17. data/test/fixtures/quaderno_cassettes/all_webhooks.yml +45 -45
  18. data/test/fixtures/quaderno_cassettes/deleted_contact.yml +49 -72
  19. data/test/fixtures/quaderno_cassettes/deleted_estimate.yml +54 -62
  20. data/test/fixtures/quaderno_cassettes/deleted_expense.yml +52 -63
  21. data/test/fixtures/quaderno_cassettes/deleted_invoice.yml +53 -140
  22. data/test/fixtures/quaderno_cassettes/deleted_item.yml +28 -28
  23. data/test/fixtures/quaderno_cassettes/deleted_webhook.yml +54 -54
  24. data/test/fixtures/quaderno_cassettes/delivered_estimate.yml +33 -26
  25. data/test/fixtures/quaderno_cassettes/delivered_invoice.yml +38 -113
  26. data/test/fixtures/quaderno_cassettes/found_contact.yml +26 -36
  27. data/test/fixtures/quaderno_cassettes/found_estimate.yml +34 -24
  28. data/test/fixtures/quaderno_cassettes/found_expense.yml +30 -26
  29. data/test/fixtures/quaderno_cassettes/found_invoice.yml +31 -110
  30. data/test/fixtures/quaderno_cassettes/found_item.yml +20 -19
  31. data/test/fixtures/quaderno_cassettes/found_webhook.yml +27 -27
  32. data/test/fixtures/quaderno_cassettes/new_contact.yml +10 -10
  33. data/test/fixtures/quaderno_cassettes/new_estimate.yml +35 -50
  34. data/test/fixtures/quaderno_cassettes/new_expense.yml +52 -63
  35. data/test/fixtures/quaderno_cassettes/new_invoice.yml +35 -49
  36. data/test/fixtures/quaderno_cassettes/new_item.yml +10 -10
  37. data/test/fixtures/quaderno_cassettes/new_webhook.yml +18 -18
  38. data/test/fixtures/quaderno_cassettes/paid_expense.yml +27 -23
  39. data/test/fixtures/quaderno_cassettes/paid_invoice.yml +28 -101
  40. data/test/fixtures/quaderno_cassettes/rate_limit.yml +7 -7
  41. data/test/fixtures/quaderno_cassettes/unpay_an_expense.yml +36 -32
  42. data/test/fixtures/quaderno_cassettes/unpay_an_invoice.yml +37 -110
  43. data/test/fixtures/quaderno_cassettes/updated_contact.yml +27 -37
  44. data/test/fixtures/quaderno_cassettes/updated_estimate.yml +46 -62
  45. data/test/fixtures/quaderno_cassettes/updated_expense.yml +45 -61
  46. data/test/fixtures/quaderno_cassettes/updated_invoice.yml +46 -61
  47. data/test/fixtures/quaderno_cassettes/updated_item.yml +20 -20
  48. data/test/fixtures/quaderno_cassettes/updated_webhook.yml +37 -37
  49. data/test/unit/test_quaderno_contacts.rb +2 -2
  50. data/test/unit/test_quaderno_estimates.rb +2 -2
  51. data/test/unit/test_quaderno_expenses.rb +2 -2
  52. data/test/unit/test_quaderno_invoices.rb +2 -2
  53. data/test/unit/test_quaderno_items.rb +2 -2
  54. data/test/unit/test_quaderno_webhooks.rb +2 -2
  55. metadata +2 -2
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzA3ZDIzYmY5YjRhOTJmMGE3M2QzNWM2ZmM4ODgxN2M3ODA0NTk5Zg==
4
+ YWU4MDljODQ0MWYwMzk4ZjcwMWVkMDhhYjhjMjM0MDFiZDA1MDcwOA==
5
5
  data.tar.gz: !binary |-
6
- Nzg1ZjkyM2M3ODUxM2IyZmVhMDBiZDU3ZTExZDVhYzA4MDc3Y2E2YQ==
6
+ MWEyNGVhOTAzYjcyMzE1YTYyOTFlM2EwZWY2MzljZmM5NWQyNTRjMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- Y2NiZWY3YjE2NThhYTViYjQzOTFjZTcwMTBhYzVmZjEwZTRhZTE0NWU5OTI4
10
- ZWVlZTc1Mjk4YWI2NGMyYmFhZTIwNDcwMGQyMzFmMGRiNDMzMmQxYTg4NTM2
11
- NDJlM2M0ZTg1ODFhZDhmZWI3M2IwZjg2Y2M5MmQyYWQzMzZmMDU=
9
+ YjBhNzg1M2ExOGUwYjZjOTcxYmRlYmZhZTFmYmUxNGQ3YjZkNTcwNjdiZjAy
10
+ ZWNlNDZjZDUxYjAzZTA5ZTIzNjhiMzI1YjkyMjI0ZjI3ZjdhZWNmZjFjNDk1
11
+ NDQzNDdkYTUwZGIwNzExYzMzNTZkZjA2NWI3NzUwZDdjMTQ5NDA=
12
12
  data.tar.gz: !binary |-
13
- MzA0Nzc5ODM0NDIzNTllYjU5YmIyNDlhNzY1YTk2OGZiNDI3MzE3NDhhODIw
14
- NjYxZTkxYzA0NTZhMWYxZjFhOTUwMmYyYzZiNDUyN2U3MTAwNzBmZDc3NzY4
15
- YzllYTU4NjgxMTJhNzdlMDMyOWFjNGUyNzAxNTQ5MTQ2NDc2MDg=
13
+ N2NjODQ0MzdmNzMxZTFiNjI2MzQyZjIyODJkZjQwZTg2ZGQ1ZDM0YzFkODYy
14
+ Mjc1Nzg3MDdmNDA0OTk2NGM3ZjFmMDk0MDU0NzVkNDI3ODZmZDMwNjc4NmRh
15
+ ZGMzMDYzZmEyZWMyMmQ4OTY3OWUzMDQxNGVhNjM4ZTJhOWJhYWU=
data/README.md CHANGED
@@ -10,17 +10,17 @@ Current version is 1.3.1. See the changelog [here](https://github.com/recrea/qua
10
10
  To install add the following to your Gemfile:
11
11
 
12
12
  ```ruby
13
- gem 'quaderno', require: 'quaderno-ruby'
13
+ gem 'quaderno', require: 'quaderno-ruby'
14
14
  ```
15
15
 
16
16
  To configure just add this to your initializers
17
17
 
18
18
  ```ruby
19
- Quaderno::Base.configure do |config|
20
- config.auth_token = 'my_authenticate_token'
21
- config.subdomain = 'my_account_subdomain'
19
+ Quaderno::Base.configure do |config|
20
+ config.auth_token = 'my_authenticate_token'
21
+ config.subdomain = 'my_subdomain'
22
22
  config.environment = :production
23
- end
23
+ end
24
24
  ```
25
25
 
26
26
  The `environment` attribute is optional and set to `:production` by default. Optionally, you can set it to `:sandbox` in order to test your application before deploying it to production.
@@ -31,10 +31,10 @@ You can get your account subdomain by grabbing it from your account url or by ca
31
31
 
32
32
  ```ruby
33
33
  Quaderno::Base.authorization 'my_authenticate_token', environment
34
- # => {"identity"=>{"id"=>737000, "name"=>"Walter White", "email"=>"cooking@br.bd", "href"=>"https://quadernoapp.com/my_account_subdomain/api/v1/"}}
34
+ # => {"identity"=>{"id"=>737000, "name"=>"Walter White", "email"=>"cooking@br.bd", "href"=>"https://my_subdomain.quadernoapp.com/api/v1/"}}
35
35
  ```
36
36
 
37
- `envirnment` is an optional argument. By passing `:sandbox`, you will retrieve your credentials for the sandbox environment and not for production.
37
+ `environment` is an optional argument. By passing `:sandbox`, you will retrieve your credentials for the sandbox environment and not for production.
38
38
 
39
39
  This will return a hash with the information about your api url, which includes the account subdomain.
40
40
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.3.1
1
+ 1.3.2
data/build_install.sh CHANGED
@@ -1,2 +1,2 @@
1
1
  gem build quaderno.gemspec
2
- gem install quaderno-1.3.1.gem
2
+ gem install quaderno-1.3.2.gem
data/changelog.md CHANGED
@@ -1,4 +1,8 @@
1
1
  #Changelog
2
+ ##1.3.2
3
+
4
+ * Use new urls format
5
+
2
6
  ##1.3.1
3
7
 
4
8
  * Added sandbox environment
@@ -7,16 +7,16 @@ module Quaderno
7
7
  include Quaderno::Exceptions
8
8
  include Quaderno::Behavior::Crud
9
9
 
10
+ PRODUCTION_URL = 'https://quadernoapp.com'
11
+ SANDBOX_URL = 'http://sandbox-quadernoapp.com'
12
+
10
13
  @@auth_token = nil
11
- @@subdomain = nil
14
+ @@subdomain = 'subdomain'
12
15
  @@rate_limit_info = nil
16
+ @@base_url = PRODUCTION_URL
13
17
  @@environment = :production
14
- @@base_url = 'https://quadernoapp.com'
15
-
16
- def to_hash
17
- self.marshal_dump
18
- end
19
18
 
19
+ # Class methods
20
20
  def self.api_model(klass)
21
21
  instance_eval <<-END
22
22
  def api_model
@@ -30,11 +30,9 @@ module Quaderno
30
30
  END
31
31
  end
32
32
 
33
- #Default way to configure the authenticata data
34
33
  def self.configure
35
34
  yield self
36
-
37
- @@base_url = @@environment == :sandbox ? 'http://sandbox-quadernoapp.com' : 'https://quadernoapp.com'
35
+ @@base_url = @@environment == :sandbox && !@@subdomain.nil? ? "http://#{@@subdomain}.sandbox-quadernoapp.com" : "https://#{@@subdomain}.quadernoapp.com"
38
36
  end
39
37
 
40
38
  def self.environment=(mode)
@@ -52,8 +50,8 @@ module Quaderno
52
50
  def self.authorization(auth_token, mode = nil)
53
51
  begin
54
52
  mode ||= @@environment
55
- base_url = mode == :sandbox ? 'http://sandbox-quadernoapp.com' : 'https://quadernoapp.com'
56
- party_response = get("#{base_url}/subdomain/api/v1/authorization.json", basic_auth: { username: auth_token })
53
+ base_url = mode == :sandbox ? SANDBOX_URL : PRODUCTION_URL
54
+ party_response = get("#{base_url}/api/v1/authorization.json", basic_auth: { username: auth_token })
57
55
  return JSON::parse party_response.body
58
56
  rescue Exception
59
57
  return false
@@ -63,7 +61,7 @@ module Quaderno
63
61
  #Check the connection
64
62
  def self.ping
65
63
  begin
66
- party_response = get("#{base_url}/#{ subdomain }/api/v1/ping.json", basic_auth: { username: auth_token })
64
+ party_response = get("#{@@base_url}/api/v1/ping.json", basic_auth: { username: auth_token })
67
65
  rescue Errno::ECONNREFUSED
68
66
  return false
69
67
  end
@@ -72,23 +70,29 @@ module Quaderno
72
70
 
73
71
  #Returns the rate limit information: limit and remaining requests
74
72
  def self.rate_limit_info
75
- party_response = get("#{@@base_url}/#{ subdomain }/api/v1/ping.json", basic_auth: { username: auth_token })
73
+ party_response = get("#{@@base_url}/api/v1/ping.json", basic_auth: { username: auth_token })
76
74
  @@rate_limit_info = { limit: party_response.headers["x-ratelimit-limit"].to_i, remaining: party_response.headers["x-ratelimit-remaining"].to_i }
77
75
  end
78
76
 
77
+
78
+ # Instance methods
79
+ def to_hash
80
+ self.marshal_dump
81
+ end
79
82
 
80
83
  private
81
- def self.base_url
82
- @@base_url
83
- end
84
-
85
84
  def self.auth_token
86
85
  @@auth_token
87
86
  end
87
+
88
+ def self.base_url
89
+ @@base_url
90
+ end
88
91
 
89
92
  def self.subdomain
90
93
  @_subdomain = @@subdomain
91
94
  end
95
+
92
96
  #Set or returns the model path for the url
93
97
  def self.api_path(api_path = nil)
94
98
  @_api_path ||= api_path
@@ -28,7 +28,7 @@ module Quaderno
28
28
  end
29
29
 
30
30
  def all(filter = nil)
31
- party_response = get("#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }.json", body: filter, basic_auth: { username: api_model.auth_token })
31
+ party_response = get("#{api_model.base_url}/api/v1/#{ api_model.api_path }.json", body: filter, basic_auth: { username: api_model.auth_token })
32
32
  check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true })
33
33
  array = JSON::parse party_response.body
34
34
  collection = []
@@ -42,7 +42,7 @@ module Quaderno
42
42
  end
43
43
 
44
44
  def find(id)
45
- party_response = get "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }.json", basic_auth: { username: api_model.auth_token }
45
+ party_response = get "#{api_model.base_url}/api/v1/#{ api_model.api_path }/#{ id }.json", basic_auth: { username: api_model.auth_token }
46
46
  check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, id: true })
47
47
  hash = JSON::parse party_response.body
48
48
  if (api_model == Quaderno::Invoice) || (api_model == Quaderno::Estimate) || (api_model == Quaderno::Expense)
@@ -52,7 +52,7 @@ module Quaderno
52
52
  end
53
53
 
54
54
  def create(params)
55
- party_response = post "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }.json", body: params, basic_auth: { username: api_model.auth_token }
55
+ party_response = post "#{api_model.base_url}/api/v1/#{ api_model.api_path }.json", body: params, basic_auth: { username: api_model.auth_token }
56
56
  check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, required_fields: true })
57
57
  hash = JSON::parse party_response.body
58
58
  if (api_model == Quaderno::Invoice) || (api_model == Quaderno::Estimate) || (api_model == Quaderno::Expense)
@@ -62,7 +62,7 @@ module Quaderno
62
62
  end
63
63
 
64
64
  def update(id, params)
65
- party_response = put "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }.json", body: params, basic_auth: { username: api_model.auth_token }
65
+ party_response = put "#{api_model.base_url}/api/v1/#{ api_model.api_path }/#{ id }.json", body: params, basic_auth: { username: api_model.auth_token }
66
66
  check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, id: true })
67
67
  hash = JSON::parse party_response.body
68
68
  if (api_model == Quaderno::Invoice) || (api_model == Quaderno::Estimate) || (api_model == Quaderno::Expense)
@@ -72,7 +72,7 @@ module Quaderno
72
72
  end
73
73
 
74
74
  def delete(id)
75
- party_response = HTTParty.delete "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }.json", basic_auth: { username: api_model.auth_token }
75
+ party_response = HTTParty.delete "#{api_model.base_url}/api/v1/#{ api_model.api_path }/#{ id }.json", basic_auth: { username: api_model.auth_token }
76
76
  check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, id: true, has_documents: true })
77
77
  true
78
78
  end
@@ -8,7 +8,7 @@ module Quaderno
8
8
 
9
9
  module InstanceMethods
10
10
  def deliver
11
- party_response = api_model.get("#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }/deliver.json", basic_auth: { username: api_model.auth_token })
11
+ party_response = api_model.get("#{api_model.base_url}/api/v1/#{ api_model.api_path }/#{ id }/deliver.json", basic_auth: { username: api_model.auth_token })
12
12
  api_model.check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, id: true, required_fields: true })
13
13
  { limit: party_response.headers["x-ratelimit-limit"].to_i, remaining: party_response.headers["x-ratelimit-remaining"].to_i }
14
14
  end
@@ -11,7 +11,7 @@ module Quaderno
11
11
  end
12
12
 
13
13
  def add_payment(params)
14
- party_response = api_model.post "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }/payments.json", body: params, basic_auth: { username: api_model.auth_token }
14
+ party_response = api_model.post "#{api_model.base_url}/api/v1/#{ api_model.api_path }/#{ id }/payments.json", body: params, basic_auth: { username: api_model.auth_token }
15
15
  api_model.check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, required_fields: true })
16
16
  parsed = JSON::parse party_response.body
17
17
  instance = to_instance(Quaderno::Payment, parsed)
@@ -20,7 +20,7 @@ module Quaderno
20
20
  end
21
21
 
22
22
  def remove_payment(payment_id)
23
- party_response = HTTParty.delete "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }/payments/#{ payment_id }.json", basic_auth: { username: api_model.auth_token }
23
+ party_response = HTTParty.delete "#{api_model.base_url}/api/v1/#{ api_model.api_path }/#{ id }/payments/#{ payment_id }.json", basic_auth: { username: api_model.auth_token }
24
24
  to_delete = nil
25
25
  payments.each do |payment|
26
26
  if payment.id == payment_id
data/quaderno.gemspec CHANGED
@@ -2,15 +2,15 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: quaderno 1.3.1 ruby lib
5
+ # stub: quaderno 1.3.2 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "quaderno"
9
- s.version = "1.3.1"
9
+ s.version = "1.3.2"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.authors = ["Recrea"]
13
- s.date = "2014-06-13"
13
+ s.date = "2014-07-01"
14
14
  s.description = "longer description of your gem"
15
15
  s.email = "carlos@recrea.es"
16
16
  s.extra_rdoc_files = [
Binary file
@@ -2,13 +2,13 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: http://kAppsMggGcw8psUwdZBV@sandbox-quadernoapp.com/ninive-688/api/v1/contacts.json
5
+ uri: http://RsNaLsNr1KZcdrQRKKKk@uruk-1066.sandbox-quadernoapp.com/api/v1/contacts.json
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
9
9
  headers:
10
10
  authorization:
11
- - Basic a0FwcHNNZ2dHY3c4cHNVd2RaQlY6
11
+ - Basic UnNOYUxzTnIxS1pjZHJRUktLS2s6
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -17,7 +17,7 @@ http_interactions:
17
17
  server:
18
18
  - nginx/1.4.5
19
19
  date:
20
- - Fri, 13 Jun 2014 12:33:05 GMT
20
+ - Tue, 01 Jul 2014 09:05:52 GMT
21
21
  content-type:
22
22
  - application/json; charset=utf-8
23
23
  transfer-encoding:
@@ -29,43 +29,31 @@ http_interactions:
29
29
  x-ratelimit-limit:
30
30
  - '2000'
31
31
  x-ratelimit-remaining:
32
- - '1506'
32
+ - '1992'
33
33
  x-pages-currentpage:
34
34
  - '1'
35
35
  x-pages-totalpages:
36
- - '6'
36
+ - '1'
37
37
  x-ua-compatible:
38
38
  - IE=Edge,chrome=1
39
39
  etag:
40
- - ! '"78987cdc82808337e2e0baa06f1a206c"'
40
+ - ! '"397ea9c20a05a7decf631efe5da3f44f"'
41
41
  cache-control:
42
42
  - must-revalidate, private, max-age=0
43
43
  x-request-id:
44
- - 39dab9a17986be2f75473a773948360f
44
+ - 57504a795970902ab55c10e485edac2f
45
45
  x-runtime:
46
- - '0.142266'
46
+ - '0.092150'
47
47
  x-rack-cache:
48
48
  - miss
49
49
  body:
50
50
  encoding: US-ASCII
51
- string: ! '[{"id":760,"kind":"company","full_name":"\u0003 esatipa","contact_name":null,"street_line_1":"Torres
52
- Quevedo","street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"673832948","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/760"},{"id":113,"kind":"company","full_name":"100-499","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"totoro.estepario@gmail.com","web":null,"discount":null,"tax_id":"","bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/113"},{"id":694,"kind":"company","full_name":"Ale","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"+34650960183","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/694"},{"id":498,"kind":"company","full_name":"Alejandro","contact_name":"","street_line_1":"","street_line_2":"","postal_code":"","city":"","region":"","country":"ES","phone_1":"","phone_2":"","fax":"","email":"alexmanalopez@gmail.com","web":"","discount":null,"tax_id":"","bank_account":"","language":"ES","notes":"","url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/498"},{"id":744,"kind":"company","full_name":"Alejandro
53
- Lopez Santos","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"alexmanalopez@gmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/744"},{"id":739,"kind":"company","full_name":"ANA","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"ana@vali2.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/739"},{"id":773,"kind":"company","full_name":"Angel
54
- Ramos de Miguel","contact_name":null,"street_line_1":";;;Las Palmas de Gran
55
- Canaria;;;Espa\u00f1a","street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"668829133","phone_2":null,"fax":null,"email":"aramos.gcc@gmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/773"},{"id":717,"kind":"company","full_name":"Angel
56
- Ramos de Miguel","contact_name":null,"street_line_1":";;;Las Palmas de Gran
57
- Canaria;;;Espa\u00f1a","street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"668829133","phone_2":null,"fax":null,"email":"aramos.gcc@gmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/717"},{"id":748,"kind":"company","full_name":"Antonio Brito","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"605100535","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/748"},{"id":752,"kind":"company","full_name":"Antonio
58
- C. Dom\u00ednguez Brito","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"adominguez@iusiani.ulpgc.es","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/752"},{"id":733,"kind":"company","full_name":"aviso_llegada","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"avisollegada@adtpostales.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/733"},{"id":764,"kind":"company","full_name":"Aythami","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"678875767","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/764"},{"id":736,"kind":"company","full_name":"Borja
59
- Santana Corvo","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"ahviel@hotmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/736"},{"id":713,"kind":"company","full_name":"Bycor","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"+34646675709","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/713"},{"id":728,"kind":"company","full_name":"Bycor
60
- S\u00e1nchez","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"bycor1989@gmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/728"},{"id":729,"kind":"company","full_name":"Canal
61
- Amena","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"2224","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/729"},{"id":755,"kind":"company","full_name":"Carlos
62
- Hern\u00e1ndez","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"620815221","phone_2":null,"fax":null,"email":"carlos@recrea.es","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/755"},{"id":735,"kind":"company","full_name":"Carlos
63
- Hern\u00e1ndez Medina","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"carlos@recrea.es","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/735"},{"id":686,"kind":"company","full_name":"Coolmod","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"902
64
- 88 85 34","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/686"},{"id":749,"kind":"company","full_name":"Cristina","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"+34650756263","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/749"},{"id":726,"kind":"company","full_name":"Cruz
65
- Roja","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"987795001","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/726"},{"id":763,"kind":"company","full_name":"Dalia","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"637
66
- 22 08 60","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/763"},{"id":711,"kind":"company","full_name":"David","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"620453446","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/711"},{"id":673,"kind":"company","full_name":"David
67
- Meli\u00e1n Godoy","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"dmg_dragon@hotmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/673"},{"id":756,"kind":"company","full_name":"David
68
- Santiago","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"660608373","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/756"}]'
51
+ string: ! '[{"id":142297,"kind":"company","full_name":"Dummy","contact_name":null,"street_line_1":"","street_line_2":null,"postal_code":"","city":"","region":"","country":"US","phone_1":"","phone_2":null,"fax":null,"email":"","web":null,"discount":null,"tax_id":"","language":"ES","notes":null,"url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/contacts/142297"},{"id":142302,"kind":"company","full_name":"Pepe
52
+ Gotera & Otilio","contact_name":null,"street_line_1":"","street_line_2":null,"postal_code":"","city":"","region":"","country":"ES","phone_1":"","phone_2":null,"fax":null,"email":"","web":null,"discount":null,"tax_id":"","bank_account":null,"language":"ES","notes":null,"url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/contacts/142302"},{"id":142299,"kind":"person","first_name":"Smilin''
53
+ Stan S.","last_name":"Stanman","full_name":"Smilin'' Stan S. Stanman","street_line_1":"","street_line_2":null,"postal_code":"","city":"","region":"Monkey
54
+ Island","country":"BS","phone_1":"","phone_2":null,"fax":null,"email":"","web":null,"discount":null,"tax_id":"","language":"ES","notes":null,"url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/contacts/142299"},{"id":142298,"kind":"company","full_name":"Test","contact_name":null,"street_line_1":"Evergreen
55
+ Terrace","street_line_2":null,"postal_code":"K0A 1B0","city":"Springfield","region":"","country":"US","phone_1":"3447277","phone_2":null,"fax":null,"email":"","web":null,"discount":null,"tax_id":"","language":"ES","notes":null,"url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/contacts/142298"},{"id":142303,"kind":"company","full_name":"Test_Skynet","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"US","phone_1":null,"phone_2":null,"fax":null,"email":"my_little@po.ny","web":null,"discount":null,"tax_id":null,"language":"EN","notes":null,"url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/contacts/142303"},{"id":142301,"kind":"person","first_name":"Vince","last_name":"Offer","full_name":"Vince
56
+ Offer","street_line_1":"","street_line_2":null,"postal_code":"","city":"","region":"","country":"US","phone_1":"","phone_2":null,"fax":null,"email":"","web":null,"discount":null,"tax_id":"","language":"ES","notes":null,"url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/contacts/142301"}]'
69
57
  http_version: '1.1'
70
- recorded_at: Fri, 13 Jun 2014 12:33:05 GMT
58
+ recorded_at: Tue, 01 Jul 2014 09:05:52 GMT
71
59
  recorded_with: VCR 2.9.2
@@ -2,13 +2,13 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: http://kAppsMggGcw8psUwdZBV@sandbox-quadernoapp.com/ninive-688/api/v1/estimates.json
5
+ uri: http://RsNaLsNr1KZcdrQRKKKk@uruk-1066.sandbox-quadernoapp.com/api/v1/estimates.json
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
9
9
  headers:
10
10
  authorization:
11
- - Basic a0FwcHNNZ2dHY3c4cHNVd2RaQlY6
11
+ - Basic UnNOYUxzTnIxS1pjZHJRUktLS2s6
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -17,7 +17,7 @@ http_interactions:
17
17
  server:
18
18
  - nginx/1.4.5
19
19
  date:
20
- - Fri, 13 Jun 2014 12:37:55 GMT
20
+ - Tue, 01 Jul 2014 09:06:22 GMT
21
21
  content-type:
22
22
  - application/json; charset=utf-8
23
23
  transfer-encoding:
@@ -29,7 +29,7 @@ http_interactions:
29
29
  x-ratelimit-limit:
30
30
  - '2000'
31
31
  x-ratelimit-remaining:
32
- - '1456'
32
+ - '1978'
33
33
  x-pages-currentpage:
34
34
  - '1'
35
35
  x-pages-totalpages:
@@ -37,21 +37,28 @@ http_interactions:
37
37
  x-ua-compatible:
38
38
  - IE=Edge,chrome=1
39
39
  etag:
40
- - ! '"5d184cc5cf5eeab4c09eef2efe84c3cf"'
40
+ - ! '"d33c420455711494333dc878dbb2cf3a"'
41
41
  cache-control:
42
42
  - must-revalidate, private, max-age=0
43
43
  x-request-id:
44
- - 08f32eff100d143009988b07ad4c245d
44
+ - da5ba41b8bf4fd6ddb544d649d6ab8ce
45
45
  x-runtime:
46
- - '0.082863'
46
+ - '0.084998'
47
47
  x-rack-cache:
48
48
  - miss
49
49
  body:
50
50
  encoding: US-ASCII
51
- string: ! '[{"id":539,"number":"0000001","issue_date":"2014-06-13","contact":{"id":790,"full_name":"Test
52
- Contact"},"po_number":"","currency":"EUR","items":[{"id":693,"description":"Something","quantity":"1.0","unit_price":"0.0","discount_rate":"0.0","tax_1_name":"","tax_1_rate":null,"tax_2_name":"","tax_2_rate":null,"reference":"","subtotal":"0.00
53
- \u20ac","discount":"0.00 \u20ac","gross_amount":"0.00 \u20ac"}],"subtotal":"0.00
54
- \u20ac","discount":"0.00 \u20ac","taxes":[],"total":"0.00 \u20ac","payment_details":"","notes":"","state":"draft","tag_list":[],"secure_id":"8d2bccffae34fb6fa7bd943f7642956de77ce693","permalink":"http://ninive-688.sandbox-quadernoapp.com/estimate/8d2bccffae34fb6fa7bd943f7642956de77ce693","url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/estimates/539.json"}]'
51
+ string: ! '[{"id":492372,"number":"0000002","issue_date":"2014-07-01","contact":{"id":142302,"full_name":"Pepe
52
+ Gotera & Otilio"},"po_number":"","currency":"EUR","items":[{"id":1294890,"description":"Test
53
+ Item #5","quantity":"1.0","unit_price":"52.0","discount_rate":"0.0","tax_1_name":"","tax_1_rate":null,"tax_2_name":"","tax_2_rate":null,"reference":"","subtotal":"52.00
54
+ \u20ac","discount":"0.00 \u20ac","gross_amount":"52.00 \u20ac"},{"id":1294891,"description":"Test
55
+ Item #6","quantity":"1.0","unit_price":"30.0","discount_rate":"0.0","tax_1_name":"","tax_1_rate":null,"tax_2_name":"","tax_2_rate":null,"reference":"","subtotal":"30.00
56
+ \u20ac","discount":"0.00 \u20ac","gross_amount":"30.00 \u20ac"}],"subtotal":"82.00
57
+ \u20ac","discount":"0.00 \u20ac","taxes":[],"total":"82.00 \u20ac","payment_details":"","notes":"","state":"draft","tag_list":[],"secure_id":"4cf5cf7de5fa21c0c68737db16aa8d4630d11d19","permalink":"http://uruk-1066.sandbox-quadernoapp.com/estimate/4cf5cf7de5fa21c0c68737db16aa8d4630d11d19","url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/estimates/492372.json"},{"id":492371,"number":"0000001","issue_date":"2014-07-01","contact":{"id":142302,"full_name":"Pepe
58
+ Gotera & Otilio"},"po_number":"","currency":"EUR","items":[{"id":1294889,"description":"Test
59
+ Item #4","quantity":"1.0","unit_price":"3430.0","discount_rate":"0.0","tax_1_name":"","tax_1_rate":null,"tax_2_name":"","tax_2_rate":null,"reference":"","subtotal":"3,430.00
60
+ \u20ac","discount":"0.00 \u20ac","gross_amount":"3,430.00 \u20ac"}],"subtotal":"3,430.00
61
+ \u20ac","discount":"0.00 \u20ac","taxes":[],"total":"3,430.00 \u20ac","payment_details":"","notes":"","state":"draft","tag_list":[],"secure_id":"4f635b1811bc6cc20a071fe4f85bf8733c04b451","permalink":"http://uruk-1066.sandbox-quadernoapp.com/estimate/4f635b1811bc6cc20a071fe4f85bf8733c04b451","url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/estimates/492371.json"}]'
55
62
  http_version: '1.1'
56
- recorded_at: Fri, 13 Jun 2014 12:37:55 GMT
63
+ recorded_at: Tue, 01 Jul 2014 09:06:22 GMT
57
64
  recorded_with: VCR 2.9.2
@@ -2,13 +2,13 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: http://kAppsMggGcw8psUwdZBV@sandbox-quadernoapp.com/ninive-688/api/v1/expenses.json
5
+ uri: http://RsNaLsNr1KZcdrQRKKKk@uruk-1066.sandbox-quadernoapp.com/api/v1/expenses.json
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
9
9
  headers:
10
10
  authorization:
11
- - Basic a0FwcHNNZ2dHY3c4cHNVd2RaQlY6
11
+ - Basic UnNOYUxzTnIxS1pjZHJRUktLS2s6
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -17,7 +17,7 @@ http_interactions:
17
17
  server:
18
18
  - nginx/1.4.5
19
19
  date:
20
- - Fri, 13 Jun 2014 12:41:50 GMT
20
+ - Tue, 01 Jul 2014 09:07:17 GMT
21
21
  content-type:
22
22
  - application/json; charset=utf-8
23
23
  transfer-encoding:
@@ -29,7 +29,7 @@ http_interactions:
29
29
  x-ratelimit-limit:
30
30
  - '2000'
31
31
  x-ratelimit-remaining:
32
- - '1439'
32
+ - '1961'
33
33
  x-pages-currentpage:
34
34
  - '1'
35
35
  x-pages-totalpages:
@@ -37,22 +37,26 @@ http_interactions:
37
37
  x-ua-compatible:
38
38
  - IE=Edge,chrome=1
39
39
  etag:
40
- - ! '"f8c16df3cad07eca53aa3d6a08d8657b"'
40
+ - ! '"3e3f97d65226a933e567d56c0eec4407"'
41
41
  cache-control:
42
42
  - must-revalidate, private, max-age=0
43
43
  x-request-id:
44
- - 018ad080bcece775cac2912892127b06
44
+ - d82a1a1f7354aad334ebf4c7c194dba3
45
45
  x-runtime:
46
- - '0.169892'
46
+ - '0.155546'
47
47
  x-rack-cache:
48
48
  - miss
49
49
  body:
50
50
  encoding: US-ASCII
51
- string: ! '[{"id":543,"number":null,"issue_date":"2014-06-13","contact":{"id":790,"full_name":"Test
52
- Contact"},"po_number":"","currency":"EUR","items":[{"id":697,"description":"Hello","quantity":"1.0","unit_price":"30.0","discount_rate":"0.0","tax_1_name":"","tax_1_rate":null,"tax_2_name":"","tax_2_rate":null,"reference":"","subtotal":"30.00
53
- \u20ac","discount":"0.00 \u20ac","gross_amount":"30.00 \u20ac"}],"subtotal":"30.00
54
- \u20ac","discount":"0.00 \u20ac","taxes":[],"total":"30.00 \u20ac","payments":[{"id":373,"date":"2014-06-13","payment_method":"cash","amount":"10,000.00
55
- \u20ac","url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/expenses/543/payments/373.json"}],"notes":"","state":"paid","tag_list":[],"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/expenses/543.json"}]'
51
+ string: ! '[{"id":492370,"number":null,"issue_date":"2014-07-01","contact":{"id":142301,"full_name":"Vince
52
+ Offer"},"po_number":"","currency":"EUR","items":[{"id":1294888,"description":"ShamWow","quantity":"100.0","unit_price":"9.99","discount_rate":"0.0","tax_1_name":"","tax_1_rate":null,"tax_2_name":"","tax_2_rate":null,"reference":"","subtotal":"999.00
53
+ \u20ac","discount":"0.00 \u20ac","gross_amount":"999.00 \u20ac"}],"subtotal":"999.00
54
+ \u20ac","discount":"0.00 \u20ac","taxes":[],"total":"999.00 \u20ac","payments":[{"id":328807,"date":"2014-07-01","payment_method":"cash","amount":"10,000.00
55
+ \u20ac","url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/expenses/492370/payments/328807.json"}],"notes":"","state":"paid","tag_list":[],"url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/expenses/492370.json"},{"id":492368,"number":null,"issue_date":"2014-07-01","contact":{"id":142299,"full_name":"Test_OCP
56
+ Stanman"},"po_number":"","currency":"EUR","items":[{"id":1294884,"description":"The
57
+ Cadillac of Coffins''","quantity":"1.0","unit_price":"100000.0","discount_rate":"0.0","tax_1_name":"","tax_1_rate":null,"tax_2_name":"","tax_2_rate":null,"reference":"","subtotal":"100,000.00
58
+ \u20ac","discount":"0.00 \u20ac","gross_amount":"100,000.00 \u20ac"}],"subtotal":"100,000.00
59
+ \u20ac","discount":"0.00 \u20ac","taxes":[],"total":"100,000.00 \u20ac","payments":[],"notes":"","state":"outstanding","tag_list":[],"url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/expenses/492368.json"}]'
56
60
  http_version: '1.1'
57
- recorded_at: Fri, 13 Jun 2014 12:41:50 GMT
61
+ recorded_at: Tue, 01 Jul 2014 09:07:17 GMT
58
62
  recorded_with: VCR 2.9.2