quaderno 2.2.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1f3b6e897bcfb92df7d244d949215951b2b36f632b58fc913a0f9e507e6139fb
4
- data.tar.gz: a5beafab6ffd9e9567dc4962f53f4815ae20f320e67b0d14e08f5d5b4328d603
3
+ metadata.gz: 110d06dbefd7137c90b3446ba4fbd0e6cb967e215244de1c7a1f54d9beecf46c
4
+ data.tar.gz: 5f484fa04535448a06fd960e0656ab29b1abefea9db2dfa7e672f83511891af4
5
5
  SHA512:
6
- metadata.gz: 668e725c0b8605a44149f873e5f4dcd69d162dae7339b8dabb92547a4403aba8f541c20c8e449ed0d8073893ead12f57897490df5665a47660fdd55b44d6e117
7
- data.tar.gz: 3c0a8339f8d725f51e116020dcc177543757a3915473498af9bbebce19a3d776a88b7b3b2b38abd569fd1fb6c3335b55a884b93d5f4924eaf01a243f224435d1
6
+ metadata.gz: 925cbcdacf1bfa00b11c3b3f3e9f5791da6295f550d1feac7dd37d00dc2d5963752840c66cfb9e88d9e56d6e6d1fe4175ba4a1c084b83ba295971862056e0d64
7
+ data.tar.gz: 5439f1cb10b38539450c5351a256117fa39d906245a985533fc56a49d78ce456634aa1963f97fcbef57ce0f28227082a717b154618d987e3f5cd857e4c434552
data/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # quaderno-ruby
2
2
 
3
- Quaderno-ruby is a ruby wrapper for [Quaderno API] (https://github.com/quaderno/quaderno-api).
3
+ Quaderno-ruby is a ruby wrapper for the [Quaderno API](https://developers.quaderno.io/api).
4
4
 
5
- Current version is 2.1.3 See the changelog [here](https://github.com/quaderno/quaderno-ruby/blob/master/changelog.md)
5
+ Current version is 3.0.0 See the changelog [here](https://github.com/quaderno/quaderno-ruby/blob/master/changelog.md).
6
+
7
+ To learn more about our API and ecosystem, check [developers.quaderno.io](https://developers.quaderno.io).
6
8
 
7
9
  ## Installation & Configuration
8
10
 
@@ -23,7 +25,11 @@ To configure just add this to your initializers
23
25
  end
24
26
  ```
25
27
 
26
- **1.7.1 Breaking changes:** If you are using a configuration based on versions `< '1.7.1'`, you will notice that the old configuration no longer works, so please update your configuration or specify the `1.7.0` version.
28
+ ## Quaderno Sandbox
29
+
30
+ Quaderno Sandbox is our public staging environment, a safe space to experiment with our set of APIs and products. As a complete separate environment, it has it's own URL https://sandbox-quadernoapp.com and credentials.
31
+
32
+ It's perfect for your first steps with our tools. Please check https://developers.quaderno.io/dev_tools/sandbox to learn about its test data and limitations.
27
33
 
28
34
  ## Get authorization data
29
35
 
@@ -34,12 +40,13 @@ You can get your account subdomain by grabbing it from your account url or by ca
34
40
  response.identity # => {"id"=>737000, "name"=>"Walter White", "email"=>"cooking@br.bd", "href"=>"https://my_subdomain.quadernoapp.com/api/"}
35
41
  ```
36
42
 
37
- `environment` is an optional argument. By passing `:sandbox`, you will retrieve your credentials for the sandbox environment and not for production.
43
+ Note that `environment` is an optional argument. By passing `:sandbox`, you will retrieve your credentials for the sandbox environment and not for production.
38
44
 
39
45
  This will return a hash with the information about your api url, which includes the account subdomain.
40
46
 
41
47
  ## Ping the service
42
- You can ping the service in order to check if it is up with:
48
+
49
+ You can ping the service in order to check if it is up with:
43
50
 
44
51
  ```ruby
45
52
  response = Quaderno::Base.ping #=> Quaderno::Base
@@ -57,7 +64,7 @@ This will return `status: true` if the service is up or `status: false` if it is
57
64
 
58
65
  ```
59
66
 
60
- This will return a hash with information about the seconds until the rate limit reset and your remaining requests per minute ([check the API documentation for more information](https://github.com/quaderno/quaderno-api#rate-limiting)).
67
+ This will return a hash with information about the seconds until the rate limit reset and your remaining requests per minute ([check the API documentation for more information](https://developers.quaderno.io/api#tag/API-features/Rate-Limiting)).
61
68
 
62
69
  You can also check the rate limit for each request by checking the `rate_limit_info` method on the response:
63
70
 
@@ -98,6 +105,7 @@ Quaderno-ruby parses all the json responses in human readable data, so you can a
98
105
  ## Managing contacts
99
106
 
100
107
  ### Getting contacts
108
+
101
109
  ```ruby
102
110
  Quaderno::Contact.all #=> Array
103
111
  ```
@@ -109,6 +117,7 @@ Quaderno-ruby parses all the json responses in human readable data, so you can a
109
117
  ```
110
118
 
111
119
  ### Finding a contact
120
+
112
121
  ```ruby
113
122
  Quaderno::Contact.find(id) #=> Quaderno::Contact
114
123
  ```
@@ -116,15 +125,15 @@ Quaderno-ruby parses all the json responses in human readable data, so you can a
116
125
  will return the contact with the id passed as parameter.
117
126
 
118
127
  ### Retrieving a contact by its payment gateway customer ID
128
+
119
129
  ```ruby
120
130
  Quaderno::Contact.retrieve(PAYMENT_GATEWAY_CUSTOMER_ID, PAYMENT_GATEWAY) #=> Quaderno::Contact
121
131
  ```
122
- will return the contact with the customer id passed as parameter.
123
-
124
- *_Note_: `Quaderno::Contact.retrieve_customer` has been deprecated in favor of `Quaderno::Contact.retrieve`
125
132
 
133
+ will return the contact with the customer id passed as parameter.
126
134
 
127
135
  ### Creating a new contact
136
+
128
137
  ```ruby
129
138
  Quaderno::Contact.create(params) #=> Quaderno::Contact
130
139
  ```
@@ -132,6 +141,7 @@ will return the contact with the customer id passed as parameter.
132
141
  will create a contact using the information of the hash passed as parameter and return an instance of Quaderno::Contact with the created contact.
133
142
 
134
143
  ### Updating an existing contact
144
+
135
145
  ```ruby
136
146
  Quaderno::Contact.update(id, params) #=> Quaderno::Contact
137
147
  ```
@@ -139,6 +149,7 @@ will create a contact using the information of the hash passed as parameter and
139
149
  will update the specified contact with the data of the hash passed as second parameter.
140
150
 
141
151
  ### Deleting a contact
152
+
142
153
  ```ruby
143
154
  Quaderno::Contact.delete(id) #=> Quaderno::Contact
144
155
  ```
@@ -148,6 +159,7 @@ will delete the contact with the id passed as parameter. If the deletion was suc
148
159
  ## Managing items
149
160
 
150
161
  ### Getting items
162
+
151
163
  ```ruby
152
164
  Quaderno::Item.all #=> Array
153
165
  ```
@@ -155,6 +167,7 @@ will delete the contact with the id passed as parameter. If the deletion was suc
155
167
  will return an array with all your items.
156
168
 
157
169
  ### Finding an item
170
+
158
171
  ```ruby
159
172
  Quaderno::Item.find(id) #=> Quaderno::Item
160
173
  ```
@@ -162,6 +175,7 @@ will return an array with all your items.
162
175
  will return the items with the id passed as parameter.
163
176
 
164
177
  ### Creating a new item
178
+
165
179
  ```ruby
166
180
  Quaderno::Item.create(params) #=> Quaderno::Item
167
181
  ```
@@ -169,6 +183,7 @@ will return the items with the id passed as parameter.
169
183
  will create an item using the information of the hash passed as parameter and return an instance of Quaderno::Item with the created contact.
170
184
 
171
185
  ### Updating an existing item
186
+
172
187
  ```ruby
173
188
  Quaderno::Item.update(id, params) #=> Quaderno::Item
174
189
  ```
@@ -176,6 +191,7 @@ will create an item using the information of the hash passed as parameter and re
176
191
  will update the specified item with the data of the hash passed as second parameter.
177
192
 
178
193
  ### Deleting an item
194
+
179
195
  ```ruby
180
196
  Quaderno::Item.delete(id) #=> Quaderno::Item
181
197
  ```
@@ -192,10 +208,10 @@ will delete the item with the id passed as parameter. If the deletion was succe
192
208
 
193
209
  will create a sale or refund transaction using the information of the hash passed as parameter.
194
210
 
195
-
196
211
  ## Managing invoices
197
212
 
198
213
  ### Getting invoices
214
+
199
215
  ```ruby
200
216
  Quaderno::Invoice.all #=> Array
201
217
  ```
@@ -203,6 +219,7 @@ will create a sale or refund transaction using the information of the hash passe
203
219
  will return an array with all your invoices. You can also pass query strings using the attribute :q in order to filter the results by contact name, :state to filter by state or :date to filter by date
204
220
 
205
221
  ### Finding an invoice
222
+
206
223
  ```ruby
207
224
  Quaderno::Invoice.find(id) #=> Quaderno::Invoice
208
225
  ```
@@ -210,11 +227,12 @@ will create a sale or refund transaction using the information of the hash passe
210
227
  will return the invoice with the id passed as parameter.
211
228
 
212
229
  ### Retrieving an invoice by its payment gateway transaction ID
230
+
213
231
  ```ruby
214
232
  Quaderno::Invoice.retrieve(PAYMENT_GATEWAY_TRANSACTION_ID, PAYMENT_GATEWAY) #=> Quaderno::Invoice
215
233
  ```
216
- will return the invoice with the transaction id passed as parameter.
217
234
 
235
+ will return the invoice with the transaction id passed as parameter.
218
236
 
219
237
  ### Creating a new invoice
220
238
 
@@ -225,6 +243,7 @@ will return the invoice with the transaction id passed as parameter.
225
243
  will create an invoice using the information of the hash passed as parameter.
226
244
 
227
245
  ### Updating an existing invoice
246
+
228
247
  ```ruby
229
248
  Quaderno::Invoice.update(id, params) #=> Quaderno::Invoice
230
249
  ```
@@ -239,9 +258,9 @@ will update the specified invoice with the data of the hash passed as second par
239
258
 
240
259
  will delete the invoice with the id passed as parameter. If the deletion was successful, an instance of `Quaderno::Item` with the `deleted` attribute set to `true` will be returned.
241
260
 
261
+ ### Adding or removing a payment
242
262
 
243
- ###Adding or removing a payment
244
- In order to add a payment you will need the Invoice instance you want to update.
263
+ In order to add a payment you will need the Invoice instance you want to update.
245
264
 
246
265
  ```ruby
247
266
  invoice = Quaderno::Invoice.find(invoice_id)
@@ -271,6 +290,7 @@ In order to remove a payment you will need the Invoice instance you want to upd
271
290
  ## Managing credits
272
291
 
273
292
  ### Getting credits
293
+
274
294
  ```ruby
275
295
  Quaderno::Credit.all #=> Array
276
296
  ```
@@ -278,6 +298,7 @@ In order to remove a payment you will need the Invoice instance you want to upd
278
298
  will return an array with all your credit notes. You can also pass query strings using the attribute :q in order to filter the results by contact name, :state to filter by state or :date to filter by date
279
299
 
280
300
  ### Finding a credit
301
+
281
302
  ```ruby
282
303
  Quaderno::Credit.find(id) #=> Quaderno::Credit
283
304
  ```
@@ -285,9 +306,11 @@ In order to remove a payment you will need the Invoice instance you want to upd
285
306
  will return the credit with the id passed as parameter.
286
307
 
287
308
  ### Retrieving a credit by its payment gateway transaction ID
309
+
288
310
  ```ruby
289
311
  Quaderno::Credit.retrieve(PAYMENT_GATEWAY_TRANSACTION_ID, PAYMENT_GATEWAY) #=> Quaderno::Credit
290
312
  ```
313
+
291
314
  will return the credit note with the transaction id passed as parameter.
292
315
 
293
316
  ### Creating a new credit
@@ -299,6 +322,7 @@ will return the credit note with the transaction id passed as parameter.
299
322
  will create a credit from the invoice specified in the parameter.
300
323
 
301
324
  ### Updating an existing credit
325
+
302
326
  ```ruby
303
327
  Quaderno::Credit.update(id, params) #=> Quaderno::Credit
304
328
  ```
@@ -313,8 +337,8 @@ will update the specified credit with the data of the hash passed as second para
313
337
 
314
338
  will delete the credit with the id passed as parameter. If the deletion was successful, an instance of `Quaderno::Credit` with the `deleted` attribute set to `true` will be returned.
315
339
 
316
-
317
340
  ### Adding or removing a payment
341
+
318
342
  In order to add a payment you will need the Credit instance you want to update.
319
343
 
320
344
  ```ruby
@@ -344,11 +368,10 @@ If the deletion was successful, an instance of `Quaderno::Payment` with the `del
344
368
  result.success #=> Boolean
345
369
  ```
346
370
 
347
-
348
371
  ## Managing estimates
349
372
 
350
-
351
373
  ### Getting estimates
374
+
352
375
  ```ruby
353
376
  Quaderno::Estimate.all #=> Array
354
377
  ```
@@ -356,6 +379,7 @@ If the deletion was successful, an instance of `Quaderno::Payment` with the `del
356
379
  will return an array with all your estimates.
357
380
 
358
381
  ### Finding an estimate
382
+
359
383
  ```ruby
360
384
  Quaderno::Estimate.find(id) #=> Quaderno::Estimate
361
385
  ```
@@ -371,6 +395,7 @@ will return the estimate with the id passed as parameter.
371
395
  will create an estimate using the information of the hash passed as parameter.
372
396
 
373
397
  ### Updating an existing estimate
398
+
374
399
  ```ruby
375
400
  Quaderno::Estimate.update(id, params)
376
401
  ```
@@ -385,9 +410,9 @@ will update the specified estimate with the data of the hash passed as second pa
385
410
 
386
411
  will delete the estimate with the id passed as parameter. If the deletion was successful, an instance of `Quaderno::Contact` with the `deleted` attribute set to `true` will be returned.
387
412
 
413
+ ### Adding or removing a payment
388
414
 
389
- ###Adding or removing a payment
390
- In order to add a payment you will need the estimate you want to update.
415
+ In order to add a payment you will need the estimate you want to update.
391
416
 
392
417
  ```ruby
393
418
  estimate = Quaderno::Estimate.find(estimate_id)
@@ -404,7 +429,8 @@ In order to remove a payment you will need the estimate you want to update.
404
429
  ```
405
430
 
406
431
  ### Delivering the estimate
407
- In order to deliver the estimate to the default recipient you will need the estimate you want to send.
432
+
433
+ In order to deliver the estimate to the default recipient you will need the estimate you want to send.
408
434
 
409
435
  ```ruby
410
436
  estimate = Quaderno::Estimate.find(estimate_id)
@@ -413,10 +439,10 @@ In order to remove a payment you will need the estimate you want to update.
413
439
  result.success #=> Boolean
414
440
  ```
415
441
 
416
-
417
442
  ## Managing expenses
418
443
 
419
444
  ### Getting expenses
445
+
420
446
  ```ruby
421
447
  Quaderno::Expense.all #=> Array
422
448
  ```
@@ -424,6 +450,7 @@ In order to remove a payment you will need the estimate you want to update.
424
450
  will return an array with all your expenses. You can also pass query strings using the attribute :q in order to filter the results by contact name, :state to filter by state or :date to filter by date.
425
451
 
426
452
  ### Finding an expense
453
+
427
454
  ```ruby
428
455
  Quaderno::Expense.find(id) #=> Quaderno::Expense
429
456
  ```
@@ -431,6 +458,7 @@ In order to remove a payment you will need the estimate you want to update.
431
458
  will return the expense with the id passed as parameter.
432
459
 
433
460
  ### Creating a new expense
461
+
434
462
  ```ruby
435
463
  Quaderno::Expense.create(params) #=> Quaderno::Expense
436
464
  ```
@@ -438,6 +466,7 @@ will return the expense with the id passed as parameter.
438
466
  will create an expense using the information of the hash passed as parameter and return an instance of Quaderno::Expense with the created expense.
439
467
 
440
468
  ### Updating an existing expense
469
+
441
470
  ```ruby
442
471
  Quaderno::Expense.update(id, params) #=> Quaderno::Expense
443
472
  ```
@@ -445,16 +474,17 @@ will create an expense using the information of the hash passed as parameter and
445
474
  will update the specified expense with the data of the hash passed as second parameter.
446
475
 
447
476
  ### Deleting an expense
477
+
448
478
  ```ruby
449
479
  Quaderno::Expense.delete(id) #=> Quaderno::Expense
450
480
  ```
451
481
 
452
482
  will delete the expense with the id passed as parameter. If the deletion was successful, an instance of `Quaderno::Expense` with the `deleted` attribute set to `true` will be returned.
453
483
 
454
-
455
484
  ## Managing recurrings
456
485
 
457
486
  ### Getting recurrings
487
+
458
488
  ```ruby
459
489
  Quaderno::Recurring.all #=> Array
460
490
  ```
@@ -462,6 +492,7 @@ will delete the expense with the id passed as parameter. If the deletion was suc
462
492
  will return an array with all your recurring notes. You can also pass query strings using the attribute :q in order to filter the results by contact name, :state to filter by state or :date to filter by date
463
493
 
464
494
  ### Finding a recurring
495
+
465
496
  ```ruby
466
497
  Quaderno::Recurring.find(id) #=> Quaderno::Recurring
467
498
  ```
@@ -477,6 +508,7 @@ will return the recurring with the id passed as parameter.
477
508
  will create a recurring using the information of the hash passed as parameter.
478
509
 
479
510
  ### Updating an existing recurring
511
+
480
512
  ```ruby
481
513
  Quaderno::Recurring.update(id, params) #=> Quaderno::Recurring
482
514
  ```
@@ -491,10 +523,10 @@ will update the specified recurring with the data of the hash passed as second p
491
523
 
492
524
  will delete the recurring with the id passed as parameter. If the deletion was successful, an instance of `Quaderno::Recurring` with the `deleted` attribute set to `true` will be returned.
493
525
 
494
-
495
526
  ## Managing webhooks
496
527
 
497
528
  ### Getting webhooks
529
+
498
530
  ```ruby
499
531
  Quaderno::Webhook.all #=> Array
500
532
  ```
@@ -502,6 +534,7 @@ will delete the recurring with the id passed as parameter. If the deletion was s
502
534
  will return an array with all the webhooks you have subscribed.
503
535
 
504
536
  ### Finding a webhook
537
+
505
538
  ```ruby
506
539
  Quaderno::Webhook.find(id) #=> Quaderno::Webhook
507
540
  ```
@@ -509,6 +542,7 @@ will delete the recurring with the id passed as parameter. If the deletion was s
509
542
  will return the webhook with the id passed as parameter.
510
543
 
511
544
  ### Creating a new webhook
545
+
512
546
  ```ruby
513
547
  Quaderno::Webhook.create(params) #=> Quaderno::Webhook
514
548
  ```
@@ -516,6 +550,7 @@ will return the webhook with the id passed as parameter.
516
550
  will create a webhook using the information of the hash passed as parameter and return an instance of Quaderno::Webhook with the created webhook.
517
551
 
518
552
  ### Updating an existing webhook
553
+
519
554
  ```ruby
520
555
  Quaderno::Webhook.update(id, params) #=> Quaderno::Webhook
521
556
  ```
@@ -523,27 +558,108 @@ will create a webhook using the information of the hash passed as parameter and
523
558
  will update the specified webhook with the data of the hash passed as second parameter.
524
559
 
525
560
  ### Deleting a webhook
561
+
526
562
  ```ruby
527
563
  Quaderno::Webhook.delete(id) #=> Quaderno::Webhook
528
564
  ```
529
- will delete the webhook with the id passed as parameter. If the deletion was successful, an instance of `Quaderno::Webhook` with the `deleted` attribute set to `true` will be returned.
530
565
 
566
+ will delete the webhook with the id passed as parameter. If the deletion was successful, an instance of `Quaderno::Webhook` with the `deleted` attribute set to `true` will be returned.
531
567
 
532
- ## Taxes
568
+ ## Tax rates
533
569
 
534
570
  ### Calculating taxes
571
+
535
572
  ```ruby
536
- Quaderno::Tax.calculate(params) #=> Quaderno::Tax
573
+ Quaderno::TaxRate.calculate(params) #=> Quaderno::TaxRate
537
574
  ```
538
575
 
539
576
  will calculate the taxes applied for a customer based on the data pased as parameters.
540
577
 
541
- ### Validate tax ID
578
+ ## Tax jurisdictions
579
+
580
+ ### Listing tax jurisdictions
581
+
582
+ ```ruby
583
+ Quaderno::TaxJurisdiction.all #=> Array
584
+ ```
585
+
586
+ will return an array with all the tax jurisdictions supported in Quaderno.
587
+
588
+ ### Finding a tax jurisdiction
589
+
590
+ ```ruby
591
+ Quaderno::TaxJurisdiction.find(id) #=> Quaderno::TaxJurisdiction
592
+ ```
593
+
594
+ will return the tax jurisdiction with the id passed as parameter.
595
+
596
+ ## Tax codes
597
+
598
+ ### Listing tax codes
599
+
600
+ ```ruby
601
+ Quaderno::TaxCode.all #=> Array
602
+ ```
603
+
604
+ will return an array with all the tax codes supported in Quaderno.
605
+
606
+ ### Finding a tax jurisdiction
607
+
608
+ ```ruby
609
+ Quaderno::TaxCode.find(id) #=> Quaderno::TaxCode
610
+ ```
611
+
612
+ will return the tax code with the id passed as parameter.
613
+
614
+ ## Managing Tax ids
615
+
616
+ ### Getting tax ids
617
+
618
+ ```ruby
619
+ Quaderno::TaxId.all #=> Array
620
+ ```
621
+
622
+ will return an array with all the tax ids in the target account.
623
+
624
+ ### Finding a tax id
625
+
626
+ ```ruby
627
+ Quaderno::TaxId.find(id) #=> Quaderno::TaxId
628
+ ```
629
+
630
+ will return the tax id with the id passed as parameter.
631
+
632
+ ### Adding a new tax id
633
+
634
+ ```ruby
635
+ Quaderno::TaxId.create(params) #=> Quaderno::TaxId
636
+ ```
637
+
638
+ will create a tax id using the information of the hash passed as parameter and return an instance of Quaderno::TaxId with the created tax id.
639
+
640
+ ### Updating an existing tax id
641
+
642
+ ```ruby
643
+ Quaderno::TaxId.update(id, params) #=> Quaderno::TaxId
644
+ ```
645
+
646
+ will update the specified tax id with the data of the hash passed as second parameter.
647
+
648
+ ### Deleting a tax id
649
+
650
+ ```ruby
651
+ Quaderno::TaxId.delete(id) #=> Quaderno::TaxId
652
+ ```
653
+
654
+ will delete the tax id with the id passed as parameter. If the deletion was successful, an instance of `Quaderno::TaxId` with the `deleted` attribute set to `true` will be returned.
655
+
656
+ ### Validate a tax id
657
+
542
658
  ```ruby
543
659
  country = 'IE'
544
660
  tax_id = 'IE6388047V'
545
661
 
546
- result = Quaderno::Tax.validate_tax_id(country, tax_id) #=> Quaderno::Tax
662
+ result = Quaderno::TaxId.validate(country, tax_id) #=> Quaderno::TaxId
547
663
 
548
664
  result.valid #=> Boolean or nil
549
665
  ```
@@ -553,6 +669,7 @@ will validate the tax ID or business number for the specified country.
553
669
  ## Evidences
554
670
 
555
671
  ### Creating location evidences
672
+
556
673
  ```ruby
557
674
  Quaderno::Evidence.create(params) #=> Quaderno::Evidence
558
675
  ```
@@ -569,6 +686,7 @@ will create an evidence based on the data pased as parameters.
569
686
  will return an array with all the checkout sessions in your account.
570
687
 
571
688
  ### Finding a checkout session
689
+
572
690
  ```ruby
573
691
  Quaderno::CheckoutSession.find(id) #=> Quaderno::CheckoutSession
574
692
  ```
@@ -576,6 +694,7 @@ will create an evidence based on the data pased as parameters.
576
694
  will return the checkout session with the id passed as parameter.
577
695
 
578
696
  ### Creating a new checkout session
697
+
579
698
  ```ruby
580
699
  Quaderno::CheckoutSession.create(params) #=> Quaderno::CheckoutSession
581
700
  ```
@@ -583,6 +702,7 @@ will return the checkout session with the id passed as parameter.
583
702
  will create a checkout session using the information of the hash passed as parameter and return an instance of Quaderno::CheckoutSession with the created checout session.
584
703
 
585
704
  ### Updating an existing checkout session
705
+
586
706
  ```ruby
587
707
  Quaderno::CheckoutSession.update(id, params) #=> Quaderno::CheckoutSession
588
708
  ```
@@ -590,14 +710,17 @@ will create a checkout session using the information of the hash passed as param
590
710
  will update the specified checkout session with the data of the hash passed as second parameter.
591
711
 
592
712
  ### Deleting a checkout session
713
+
593
714
  ```ruby
594
715
  Quaderno::CheckoutSession.delete(id) #=> Quaderno::CheckoutSession
595
716
  ```
717
+
596
718
  will delete the checkout session with the id passed as parameter. If the deletion was successful, an instance of `Quaderno::CheckoutSession` with the `deleted` attribute set to `true` will be returned.
597
719
 
598
720
  ## Managing report requests
599
721
 
600
722
  ### Getting report requests
723
+
601
724
  ```ruby
602
725
  Quaderno::ReportRequest.all #=> Array
603
726
  ```
@@ -605,6 +728,7 @@ will delete the checkout session with the id passed as parameter. If the deletio
605
728
  will return an array with all your report requests.
606
729
 
607
730
  ### Finding a report request
731
+
608
732
  ```ruby
609
733
  Quaderno::ReportRequest.find(id) #=> Quaderno::ReportRequest
610
734
  ```
@@ -619,7 +743,93 @@ will return the report request with the id passed as parameter.
619
743
 
620
744
  will create a report request using the information of the hash passed as parameter and return an instance of Quaderno::ReportRequest with the created report request.
621
745
 
746
+ ## Connect: Managing custom accounts
747
+
748
+ ### Getting custom accounts
749
+
750
+ ```ruby
751
+ Quaderno::Account.all #=> Array
752
+ ```
753
+
754
+ will return an array with all your custom accounts
755
+
756
+ ### Finding a custom account
757
+
758
+ ```ruby
759
+ Quaderno::Account.find(id) #=> Quaderno::Account
760
+ ```
761
+
762
+ will return the account with the id passed as parameter.
763
+
764
+ ### Creating a new custom account
765
+
766
+ ```ruby
767
+ Quaderno::Account.create(params) #=> Quaderno::Account
768
+ ```
769
+
770
+ will create a custom account using the information of the hash passed as parameter.
771
+
772
+ ### Updating an existing custom account
773
+
774
+ ```ruby
775
+ Quaderno::Account.update(id, params) #=> Quaderno::Account
776
+ ```
777
+
778
+ will update the specified custom account with the data of the hash passed as second parameter.
779
+
780
+ ### Deactivating a custom account
781
+
782
+ ```ruby
783
+ Quaderno::Account.deactivate(id) #=> Quaderno::Account
784
+ ```
785
+
786
+ will deactivate the custom account with the id passed as parameter.
787
+
788
+ ### Activating a custom account
789
+
790
+ ```ruby
791
+ Quaderno::Account.activate(id) #=> Quaderno::Account
792
+ ```
793
+
794
+ will activate the custom account with the id passed as parameter.
795
+
796
+ ## Connect: Managing addresses
797
+
798
+ ### Getting addresses
799
+
800
+ ```ruby
801
+ Quaderno::Address.all(access_token: ACCESS_TOKEN) #=> Array
802
+ ```
803
+
804
+ will return an array with all the addresses of the target custom account
805
+
806
+ ### Finding a address
807
+
808
+ ```ruby
809
+ Quaderno::Address.find(id, access_token: ACCESS_TOKEN) #=> Quaderno::Address
810
+ ```
811
+
812
+ will return the address with the id passed as parameter.
813
+
814
+ ### Creating a new address
815
+
816
+ ```ruby
817
+ Quaderno::Address.create(params.merge(access_token: ACCESS_TOKEN)) #=> Quaderno::Address
818
+ ```
819
+
820
+ will add an address on the target custom account using the information of the hash passed as parameter.
821
+
822
+ ### Updating an existing address
823
+
824
+ ```ruby
825
+ Quaderno::Address.update(id, params.merge(access_token: ACCESS_TOKEN)) #=> Quaderno::Address
826
+ ```
827
+
828
+ will update the specified address with the data of the hash passed as second parameter.
829
+
830
+
622
831
  ## Exceptions
832
+
623
833
  Quaderno-ruby exceptions raise depending on the type of error:
624
834
 
625
835
  ```ruby
@@ -629,6 +839,8 @@ Quaderno-ruby exceptions raise depending on the type of error:
629
839
 
630
840
  Quaderno::Exceptions::InvalidID # Raised when the requested resource by ID does not exist in the account context.
631
841
 
842
+ Quaderno::Exceptions::InvalidRequest # Raised when the requested requirements are not fulfilled.
843
+
632
844
  Quaderno::Exceptions::ThrottleLimitExceeded # Raised when the throttle limit is exceeded.
633
845
 
634
846
  Quaderno::Exceptions::RateLimitExceeded # Raised when the rate limit is exceeded.
@@ -642,7 +854,19 @@ Quaderno-ruby exceptions raise depending on the type of error:
642
854
 
643
855
  All those exceptions inherit from `Quaderno::Exceptions::BaseException`.
644
856
 
857
+ You can inspect a the error response from the API by rescuing the exception and checking `response_body`:
858
+
859
+ ```ruby
860
+ begin
861
+ Quaderno::Invoice.find WRONG_ID
862
+ rescue Quaderno::Exceptions::BaseException => e
863
+ e.response_body # => {"error"=>"Unauthorized access or document does not exist."}
864
+ end
865
+ ```
866
+
867
+
645
868
  ### Pagination information
869
+
646
870
  Whenever you call the `all` method on one of the classes, the result will be a `Quaderno::Collection`. For example:
647
871
 
648
872
  ```ruby
@@ -711,9 +935,14 @@ Quaderno::Invoice.delete(INVOICE_ID,
711
935
 
712
936
  ## More information
713
937
 
714
- Remember this is only a ruby wrapper for the original API. If you want more information about the API itself, head to the original [API documentation](https://quaderno.io/docs/api/).
938
+ Remember this is only a ruby wrapper for the Quaderno API. Checkout our [OpenAPI documentation](https://developers.quaderno.io/api)!
939
+
940
+ If you need examples of `params` objects, head to our tests. For instance, in case you're an online store and want to register your sales and refunds, [here](https://github.com/quaderno/quaderno-ruby/blob/master/spec/unit/test_quaderno_transaction.rb) you can get examples of parameters to use with this Ruby gem.
941
+
942
+ ---
715
943
 
716
944
  ## License
945
+
717
946
  (The MIT License)
718
947
 
719
948
  Copyright © 2013-2023 Quaderno
data/changelog.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.0.0
4
+ * Added support for accounts API
5
+ * Added support for addresses API
6
+ * Added support for tax rates API
7
+ * Added support for tax jurisdictions API
8
+ * Added support for tax codes API
9
+ * Clean parameters sent in the create request
10
+ * Phase out legacy `Quaderno::Tax` class in favour of `Quaderno::TaxRate` (the class will be removed in the next release)
11
+ * Relaxed httparty requirements
12
+ * Detect and handle `bad_request` response codes
13
+ * Added `Quaderno::Exceptions::InvalidRequest` to handle `not_acceptable` response codes
14
+ * Added `Quaderno::Exceptions::BaseException#response_body` to check the API response error
15
+ * Removed legacy `Quaderno::Contact.retrieve_customer` in favor of `Quaderno::Contact.retrieve`
16
+
3
17
  ## 2.2.0
4
18
  * Added support for transactions API
5
19
  * Bumped webmock to 3.18
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Quaderno::Account < Quaderno::Base
4
+ class << self
5
+ undef :delete
6
+ end
7
+
8
+ api_model Quaderno::Account
9
+ api_path 'accounts'
10
+
11
+ def self.activate(id, options = {})
12
+ setup_account('activate', id, options)
13
+ end
14
+
15
+ def self.deactivate(id, options = {})
16
+ setup_account('deactivate', id, options)
17
+ end
18
+
19
+ private_class_method def self.setup_account(mode, id, options)
20
+ authentication = get_authentication(options.merge(api_model: api_model))
21
+
22
+ response = put("#{authentication[:url]}#{api_model.api_path}/#{id}/#{mode}.json", {
23
+ basic_auth: authentication[:basic_auth],
24
+ headers: default_headers.merge(authentication[:headers]).merge('Content-Type' => 'application/json')
25
+ })
26
+
27
+ check_exception_for(response, { rate_limit: true, required_fields: true, subdomain_or_token: true, id: true })
28
+
29
+ hash = response.parsed_response
30
+ hash[:authentication_data] = authentication
31
+
32
+ object = new hash
33
+ object.rate_limit_info = response
34
+
35
+ object
36
+ end
37
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Quaderno::Address < Quaderno::Base
4
+ api_model Quaderno::Address
5
+ api_path 'addresses'
6
+
7
+ class << self
8
+ undef :delete
9
+ end
10
+ end
@@ -2,7 +2,6 @@
2
2
 
3
3
  module Quaderno::Behavior
4
4
  module Crud
5
-
6
5
  def self.included(receiver)
7
6
  receiver.send :extend, ClassMethods
8
7
  end
@@ -71,7 +70,7 @@ module Quaderno::Behavior
71
70
 
72
71
  def create(params = {})
73
72
  authentication = get_authentication(params.merge(api_model: api_model))
74
- params.dup.delete_if { |k, _| %w[auth_token access_token api_url mode api_model].include? k.to_s }
73
+ params = params.dup.delete_if { |k, _| %w[auth_token access_token api_url mode api_model].include? k.to_s }
75
74
 
76
75
  response = post("#{authentication[:url]}#{api_model.api_path}.json",
77
76
  body: params.to_json,
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Quaderno::Behavior
2
4
  module Retrieve
3
-
4
5
  def self.included(receiver)
5
6
  receiver.send :extend, ClassMethods
6
7
  end
@@ -25,9 +26,9 @@ module Quaderno::Behavior
25
26
 
26
27
  object
27
28
  end
28
- alias_method :retrieve_customer, :retrieve
29
29
 
30
30
  private
31
+
31
32
  def retrieve_path(path)
32
33
  @_retrieve_path = path
33
34
  end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Quaderno::Exceptions
2
4
  class BaseException < StandardError
3
5
  include Quaderno::Helpers::RateLimit
6
+ include Quaderno::Helpers::Response
4
7
  end
5
8
 
6
9
  class InvalidSubdomainOrToken < BaseException
@@ -9,6 +12,9 @@ module Quaderno::Exceptions
9
12
  class InvalidID < BaseException
10
13
  end
11
14
 
15
+ class InvalidRequest < BaseException
16
+ end
17
+
12
18
  class RateLimitExceeded < BaseException
13
19
  end
14
20
 
@@ -35,31 +41,42 @@ module Quaderno::Exceptions
35
41
  def check_exception_for(party_response, params = {})
36
42
  raise_exception(Quaderno::Exceptions::UnsupportedApiVersion, 'Unsupported API version', party_response) if !!(party_response.body =~ /Unsupported API version/)
37
43
 
38
- if params[:throttle_limit].nil? == false && party_response.response.class == Net::HTTPServiceUnavailable
44
+ if params[:throttle_limit].nil? == false && party_response.response.instance_of?(Net::HTTPServiceUnavailable)
39
45
  raise_exception(Quaderno::Exceptions::ThrottleLimitExceeded, 'Throttle limit exceeded, please try again later', party_response)
40
46
  end
41
- if params[:rate_limit].nil? == false && party_response.response.class == Net::HTTPForbidden
47
+
48
+ if params[:rate_limit].nil? == false && party_response.response.instance_of?(Net::HTTPForbidden)
42
49
  raise_exception(Quaderno::Exceptions::RateLimitExceeded, 'Rate limit exceeded', party_response)
43
50
  end
44
- if params[:subdomain_or_token].nil? == false
45
- raise_exception(Quaderno::Exceptions::InvalidSubdomainOrToken, 'Invalid subdomain or token', party_response) if party_response.response.class == Net::HTTPUnauthorized
51
+
52
+ if params[:subdomain_or_token].nil? == false && party_response.response.instance_of?(Net::HTTPUnauthorized)
53
+ raise_exception(Quaderno::Exceptions::InvalidSubdomainOrToken, 'Invalid subdomain or token', party_response)
54
+ end
55
+
56
+ if params[:id].nil? == false && (party_response.response.instance_of?(Net::HTTPInternalServerError) || party_response.response.instance_of?(Net::HTTPNotFound))
57
+ raise_exception(Quaderno::Exceptions::InvalidID, "Invalid #{api_model} instance identifier", party_response)
46
58
  end
47
- if params[:id].nil? == false
48
- raise_exception(Quaderno::Exceptions::InvalidID, "Invalid #{ api_model } instance identifier", party_response) if (party_response.response.class == Net::HTTPInternalServerError) || (party_response.response.class == Net::HTTPNotFound)
59
+
60
+ if params[:required_fields].nil? == false && party_response.response.instance_of?(Net::HTTPUnprocessableEntity)
61
+ raise_exception(Quaderno::Exceptions::RequiredFieldsEmptyOrInvalid, party_response.body, party_response)
49
62
  end
50
- if params[:required_fields].nil? == false
51
- raise_exception(Quaderno::Exceptions::RequiredFieldsEmptyOrInvalid, party_response.body, party_response) if party_response.response.class == Net::HTTPUnprocessableEntity
63
+
64
+ if party_response.response.instance_of?(Net::HTTPBadRequest)
65
+ raise_exception(Quaderno::Exceptions::RequiredFieldsEmptyOrInvalid, party_response.body, party_response)
52
66
  end
53
- if params[:has_documents].nil? == false
54
- raise_exception(Quaderno::Exceptions::HasAssociatedDocuments, party_response.body, party_response) if party_response.response.class == Net::HTTPClientError
67
+
68
+ if params[:has_documents].nil? == false && party_response.response.instance_of?(Net::HTTPClientError)
69
+ raise_exception(Quaderno::Exceptions::HasAssociatedDocuments, party_response.body, party_response)
55
70
  end
56
71
 
72
+ raise_exception(Quaderno::Exceptions::InvalidRequest, 'Invalid request', party_response) if party_response.response.instance_of?(Net::HTTPNotAcceptable)
57
73
  raise_exception(Quaderno::Exceptions::ServerError, 'Server error', party_response) if party_response.response.is_a?(Net::HTTPServerError)
58
74
  end
59
75
 
60
76
  def raise_exception(klass, message, response)
61
77
  exception = klass.new(message)
62
78
  exception.rate_limit_info = response
79
+ exception.response_body = response.parsed_response
63
80
 
64
81
  raise exception
65
82
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Quaderno::Helpers
4
+ module Response
5
+ def response_body=(response)
6
+ @response_body = response
7
+ end
8
+
9
+ def response_body
10
+ @response_body
11
+ end
12
+ end
13
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Quaderno::TaxReport < OpenStruct
2
4
  end
3
5
 
@@ -11,7 +13,7 @@ class Quaderno::Tax < Quaderno::Base
11
13
 
12
14
  def self.calculate(options = {})
13
15
  authentication = get_authentication(options.merge(api_model: api_model))
14
- params = options.dup.delete_if { |k,v| %w(auth_token access_token api_url mode api_model).include? k.to_s }
16
+ params = options.dup.delete_if { |k, _| %w[auth_token access_token api_url mode api_model].include? k.to_s }
15
17
 
16
18
  response = get("#{authentication[:url]}tax_rates/calculate.json",
17
19
  query: params,
@@ -47,7 +49,7 @@ class Quaderno::Tax < Quaderno::Base
47
49
 
48
50
  def self.reports(options = {})
49
51
  authentication = get_authentication(options.merge(api_model: api_model))
50
- params = options.dup.delete_if { |k,v| %w(auth_token access_token api_url mode api_model).include? k.to_s }
52
+ params = options.dup.delete_if { |k, _| %w[auth_token access_token api_url mode api_model].include? k.to_s }
51
53
 
52
54
  response = get("#{authentication[:url]}taxes/reports.json",
53
55
  query: params,
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Quaderno::TaxCode < Quaderno::Base
4
+ class << self
5
+ undef :create, :update, :delete, :parse_nested
6
+ end
7
+
8
+ api_model Quaderno::TaxCode
9
+ api_path 'tax_codes'
10
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Quaderno::TaxId < Quaderno::Base
4
+ api_model Quaderno::TaxId
5
+ api_path 'tax_ids'
6
+ is_a_document? false
7
+
8
+ def self.validate(country, tax_id, options = {})
9
+ authentication = get_authentication(options.merge(api_model: api_model))
10
+
11
+ response = get("#{authentication[:url]}#{api_path}/validate.json",
12
+ query: { country: country, tax_id: tax_id },
13
+ basic_auth: authentication[:basic_auth],
14
+ headers: default_headers.merge(authentication[:headers])
15
+ )
16
+
17
+ check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true })
18
+
19
+ data = new({ valid: response.parsed_response['valid'] })
20
+ data.rate_limit_info = response
21
+
22
+ data
23
+ end
24
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Quaderno::TaxJurisdiction < Quaderno::Base
4
+ class << self
5
+ undef :create, :update, :delete, :parse_nested
6
+ end
7
+
8
+ api_model Quaderno::TaxJurisdiction
9
+ api_path 'jurisdictions'
10
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Quaderno::TaxRate < Quaderno::Base
4
+ api_model Quaderno::TaxRate
5
+ api_path 'tax_rates'
6
+
7
+ def self.calculate(options = {})
8
+ authentication = get_authentication(options.merge(api_model: api_model))
9
+ params = options.dup.delete_if { |k, _| %w[auth_token access_token api_url mode api_model].include? k.to_s }
10
+
11
+ response = get("#{authentication[:url]}#{api_path}/calculate.json",
12
+ query: params,
13
+ basic_auth: authentication[:basic_auth],
14
+ headers: default_headers.merge(authentication[:headers])
15
+ )
16
+
17
+ check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true })
18
+ data = new response.parsed_response
19
+ data.rate_limit_info = response
20
+
21
+ data
22
+ end
23
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Quaderno
4
- VERSION = "2.2.0"
4
+ VERSION = "3.0.0"
5
5
  end
data/lib/quaderno-ruby.rb CHANGED
@@ -7,9 +7,10 @@ require 'ostruct'
7
7
 
8
8
  require 'quaderno-ruby/version'
9
9
  require 'quaderno-ruby/helpers/rate_limit'
10
+ require 'quaderno-ruby/helpers/response'
10
11
  require 'quaderno-ruby/exceptions/exceptions'
11
12
  require 'quaderno-ruby/helpers/authentication'
12
13
  require 'quaderno-ruby/collection'
13
14
 
14
- %w(block crud deliver payment retrieve).each { |filename| require "quaderno-ruby/behavior/#{filename}" }
15
- %w(base contact item transaction invoice receipt credit income estimate expense recurring document_item report report_request evidence payment webhook tax checkout_session).each { |filename| require "quaderno-ruby/#{filename}" }
15
+ %w[block crud deliver payment retrieve].each { |filename| require "quaderno-ruby/behavior/#{filename}" }
16
+ %w[base account address contact item transaction invoice receipt credit income estimate expense recurring document_item report report_request evidence payment webhook tax tax_id tax_rate tax_code tax_jurisdiction checkout_session].each { |filename| require "quaderno-ruby/#{filename}" }
data/quaderno.gemspec CHANGED
@@ -21,12 +21,12 @@ Gem::Specification.new do |spec|
21
21
  spec.date = '2018-05-07'
22
22
  spec.extra_rdoc_files = %w(LICENSE.txt README.md)
23
23
 
24
- spec.add_dependency('httparty', '~> 0.21.0')
25
- spec.add_development_dependency('rdoc', '>= 6.3.1')
24
+ spec.add_dependency('httparty', '~> 0.21')
26
25
  spec.add_development_dependency('activesupport', '~> 4.2.0')
27
- spec.add_development_dependency('webmock', '~> 3.18')
28
- spec.add_development_dependency('vcr', '>= 0')
29
26
  spec.add_development_dependency('bundler', '~> 2.2')
30
27
  spec.add_development_dependency('rake', '>= 12.3.3')
28
+ spec.add_development_dependency('rdoc', '>= 6.3.1')
31
29
  spec.add_development_dependency('rspec', '~> 3.0')
30
+ spec.add_development_dependency('vcr', '>= 0')
31
+ spec.add_development_dependency('webmock', '~> 3.18')
32
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quaderno
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Recrea
@@ -16,112 +16,112 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.21.0
19
+ version: '0.21'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.21.0
26
+ version: '0.21'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rdoc
28
+ name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 6.3.1
33
+ version: 4.2.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 6.3.1
40
+ version: 4.2.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: activesupport
42
+ name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 4.2.0
47
+ version: '2.2'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 4.2.0
54
+ version: '2.2'
55
55
  - !ruby/object:Gem::Dependency
56
- name: webmock
56
+ name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '3.18'
61
+ version: 12.3.3
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '3.18'
68
+ version: 12.3.3
69
69
  - !ruby/object:Gem::Dependency
70
- name: vcr
70
+ name: rdoc
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 6.3.1
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 6.3.1
83
83
  - !ruby/object:Gem::Dependency
84
- name: bundler
84
+ name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '2.2'
89
+ version: '3.0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '2.2'
96
+ version: '3.0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: rake
98
+ name: vcr
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 12.3.3
103
+ version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 12.3.3
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: rspec
112
+ name: webmock
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '3.0'
117
+ version: '3.18'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '3.0'
124
+ version: '3.18'
125
125
  description: " A ruby wrapper for Quaderno API "
126
126
  email: carlos@recrea.es
127
127
  executables: []
@@ -140,6 +140,8 @@ files:
140
140
  - Rakefile
141
141
  - changelog.md
142
142
  - lib/quaderno-ruby.rb
143
+ - lib/quaderno-ruby/account.rb
144
+ - lib/quaderno-ruby/address.rb
143
145
  - lib/quaderno-ruby/base.rb
144
146
  - lib/quaderno-ruby/behavior/block.rb
145
147
  - lib/quaderno-ruby/behavior/crud.rb
@@ -157,6 +159,7 @@ files:
157
159
  - lib/quaderno-ruby/expense.rb
158
160
  - lib/quaderno-ruby/helpers/authentication.rb
159
161
  - lib/quaderno-ruby/helpers/rate_limit.rb
162
+ - lib/quaderno-ruby/helpers/response.rb
160
163
  - lib/quaderno-ruby/income.rb
161
164
  - lib/quaderno-ruby/invoice.rb
162
165
  - lib/quaderno-ruby/item.rb
@@ -166,6 +169,10 @@ files:
166
169
  - lib/quaderno-ruby/report.rb
167
170
  - lib/quaderno-ruby/report_request.rb
168
171
  - lib/quaderno-ruby/tax.rb
172
+ - lib/quaderno-ruby/tax_code.rb
173
+ - lib/quaderno-ruby/tax_id.rb
174
+ - lib/quaderno-ruby/tax_jurisdiction.rb
175
+ - lib/quaderno-ruby/tax_rate.rb
169
176
  - lib/quaderno-ruby/transaction.rb
170
177
  - lib/quaderno-ruby/version.rb
171
178
  - lib/quaderno-ruby/webhook.rb