finapps 5.0.27 → 5.0.32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +2 -1
  3. data/RELEASES.md +49 -0
  4. data/lib/finapps.rb +6 -1
  5. data/lib/finapps/rest/client.rb +14 -8
  6. data/lib/finapps/rest/consumers.rb +21 -5
  7. data/lib/finapps/rest/documents_orders.rb +104 -0
  8. data/lib/finapps/rest/documents_orders_notifications.rb +14 -0
  9. data/lib/finapps/rest/esign_templates.rb +11 -0
  10. data/lib/finapps/rest/signed_documents_downloads.rb +15 -0
  11. data/lib/finapps/rest/verix/verix_documents.rb +21 -0
  12. data/lib/finapps/rest/verix/verix_pdf_documents.rb +15 -0
  13. data/lib/finapps/version.rb +1 -1
  14. data/spec/rest/consumers_spec.rb +19 -0
  15. data/spec/rest/documents_orders_notifications_spec.rb +40 -0
  16. data/spec/rest/documents_orders_spec.rb +287 -0
  17. data/spec/rest/esign_templates_spec.rb +20 -0
  18. data/spec/rest/signed_documents_downloads_spec.rb +35 -0
  19. data/spec/rest/verix/verix_documents_spec.rb +52 -0
  20. data/spec/rest/verix/verix_pdf_documents_spec.rb +35 -0
  21. data/spec/rest/verix/verix_records_spec.rb +3 -14
  22. data/spec/support/fake_api.rb +74 -8
  23. data/spec/support/fixtures/documents_order.json +75 -0
  24. data/spec/support/fixtures/documents_orders.json +32 -0
  25. data/spec/support/fixtures/esign_templates.json +6 -0
  26. data/spec/support/fixtures/invalid_order_id.json +5 -0
  27. data/spec/support/fixtures/invalid_signature_id.json +5 -0
  28. data/spec/support/fixtures/sign_url.json +4 -0
  29. data/spec/support/fixtures/signed_document.pdf +0 -0
  30. data/spec/support/fixtures/verix/document/document.pdf +0 -0
  31. data/spec/support/fixtures/verix/document/list.json +36 -0
  32. data/spec/support/fixtures/verix/document/show.json +35 -0
  33. data/spec/support/fixtures/verix/record/create.json +25 -17
  34. data/spec/support/fixtures/verix/record/list.json +121 -45
  35. metadata +78 -54
  36. data/lib/finapps/rest/statements.rb +0 -16
  37. data/spec/rest/statements_spec.rb +0 -42
  38. data/spec/support/fixtures/fake_pdf_statement.json +0 -3
@@ -28,6 +28,19 @@ class FakeApi < Sinatra::Base
28
28
  json_response 200, 'verix/record/create.json'
29
29
  end
30
30
 
31
+ # verix_pdf_documents
32
+ get("/#{version}/v/record/:record_id/file/:provider_id") do
33
+ pdf_response 'verix/document/document.pdf'
34
+ end
35
+
36
+ # verix_documents
37
+ get("/#{version}/v/record/:record_id/document") do
38
+ json_response 200, 'verix/document/show.json'
39
+ end
40
+ get("/#{version}/v/record/:record_id/document/:document_id") do
41
+ json_response 200, 'verix/document/list.json'
42
+ end
43
+
31
44
  # plaid_webhook/metadata
32
45
  get("/#{version}/p/metadata") do
33
46
  tenant_token = request.env['HTTP_X_TENANT_TOKEN']
@@ -189,6 +202,63 @@ class FakeApi < Sinatra::Base
189
202
  end
190
203
  end
191
204
 
205
+ # documents_orders
206
+ get("/#{version}/documents/orders") { json_response 200, 'documents_orders.json' }
207
+ get("/#{version}/documents/orders/valid_order_id") do
208
+ json_response 200, 'documents_order.json'
209
+ end
210
+ get("/#{version}/documents/orders/invalid_order_id") do
211
+ json_response 404, 'resource_not_found.json'
212
+ end
213
+ post("/#{version}/documents/orders") do
214
+ request.body.rewind
215
+ request_payload = JSON.parse request.body.read
216
+ if %w[applicant esign_documents tag].all? { |s| request_payload.key? s }
217
+ json_response 200, 'documents_order.json'
218
+ else
219
+ json_response 400, 'invalid_request_body.json'
220
+ end
221
+ end
222
+ put("/#{version}/documents/orders/valid_order_id") do
223
+ request.body.rewind
224
+ request_payload = JSON.parse request.body.read
225
+ if request_payload['tag'] == 'invalid'
226
+ json_response 400, 'invalid_request_body.json'
227
+ else
228
+ status 204
229
+ end
230
+ end
231
+ put("/#{version}/documents/orders/invalid_order_id") do
232
+ json_response 400, 'invalid_order_id.json'
233
+ end
234
+ delete("/#{version}/documents/orders/valid_order_id") { status 204 }
235
+ delete("/#{version}/documents/orders/invalid_order_id") do
236
+ json_response 404, 'resource_not_found.json'
237
+ end
238
+ get("/#{version}/documents/orders/valid_order_id/sign_url/valid_signature_id") do
239
+ json_response 200, 'sign_url.json'
240
+ end
241
+ get("/#{version}/documents/orders/invalid_order_id/sign_url/valid_signature_id") do
242
+ json_response 400, 'invalid_order_id.json'
243
+ end
244
+ get("/#{version}/documents/orders/valid_order_id/sign_url/invalid_signature_id") do
245
+ json_response 404, 'invalid_signature_id.json'
246
+ end
247
+
248
+ # documents orders notifications
249
+ post("/#{version}/documents/orders/valid_id/notify") { status 204 }
250
+ post("/#{version}/documents/orders/invalid_id/notify") do
251
+ json_response 400, 'invalid_order_id.json'
252
+ end
253
+
254
+ # signed documents downloads
255
+ get("/#{version}/consumers/:consumer_id/documents/:signature_request_id") do
256
+ pdf_response 'signed_document.pdf'
257
+ end
258
+
259
+ # esign_templates
260
+ get("/#{version}/esign_templates") { json_response 200, 'esign_templates.json' }
261
+
192
262
  # consumers
193
263
  get("/#{version}/consumers") do
194
264
  json_response 200, 'users.json'
@@ -224,14 +294,6 @@ class FakeApi < Sinatra::Base
224
294
  end
225
295
  post("/#{version}/logout") { status 204 }
226
296
 
227
- # accounts
228
- get("/#{version}/accounts/valid_id/statement/valid_id") do
229
- json_response 200, 'fake_pdf_statement.json'
230
- end
231
- get("/#{version}/accounts/invalid_id/statement/valid_id") do
232
- json_response 404, 'resource_not_found.json'
233
- end
234
-
235
297
  # operators
236
298
  get("/#{version}/operators") { json_response 200, 'operator_list.json' }
237
299
  get("/#{version}/operators/invalid_id") do
@@ -427,6 +489,10 @@ class FakeApi < Sinatra::Base
427
489
  http_response :png, 200, file_name
428
490
  end
429
491
 
492
+ def pdf_response(file_name)
493
+ http_response 'application/pdf', 200, file_name
494
+ end
495
+
430
496
  def http_response(content_type, response_code, file_name)
431
497
  content_type content_type
432
498
  status response_code
@@ -0,0 +1,75 @@
1
+ {
2
+ "order_id": "572c0ae0-bdb8-4e68-a5fd-8ac15870f2fe",
3
+ "consumer_id": "fc136a18-af0c-4d36-4743-1babb89cbbd0",
4
+ "applicant": {
5
+ "role": "patient",
6
+ "email": "validemail@financialapps.com",
7
+ "first_name": "Documents",
8
+ "last_name": "Testing"
9
+ },
10
+ "reference_no": "REFNO87687687",
11
+ "esign_documents": [
12
+ {
13
+ "document_id": "",
14
+ "template_id": "f6e9c513486c6a9468209a91ec14c25258eed515",
15
+ "name": "BH Form"
16
+ }
17
+ ],
18
+ "completed_documents": [],
19
+ "tag": "denied",
20
+ "status": 1,
21
+ "signature_requests": [
22
+ {
23
+ "signature_request_id": "b32f0073f7817f353199dcaab683d129a939e7be",
24
+ "test_mode": true,
25
+ "title": "Document for review",
26
+ "subject": "Document for review",
27
+ "message": "",
28
+ "created_at": 1588689298,
29
+ "is_complete": false,
30
+ "is_declined": false,
31
+ "has_error": false,
32
+ "signing_url": null,
33
+ "signing_redirect_url": null,
34
+ "details_url": "",
35
+ "files_url": "",
36
+ "cc_email_addresses": [],
37
+ "requester_email_address": "validemail@financialapps.com",
38
+ "custom_fields": [
39
+ {
40
+ "name": "PatientName",
41
+ "type": "text",
42
+ "value": "",
43
+ "required": true,
44
+ "editor": ""
45
+ }
46
+ ],
47
+ "response_data": [],
48
+ "signatures": [
49
+ {
50
+ "signature_id": "00b2bbdc50d4d6a6486965a921cb81f8",
51
+ "signer_email_address": "validemail@financialapps.com",
52
+ "signer_name": "Documents Testing",
53
+ "signer_role": "patient",
54
+ "order": null,
55
+ "status_code": "awaiting_signature",
56
+ "signed_at": null,
57
+ "last_viewed_at": null,
58
+ "last_reminded_at": null,
59
+ "has_pin": false,
60
+ "reassigned_by": null,
61
+ "reassignment_reason": null,
62
+ "error": null
63
+ }
64
+ ],
65
+ "metadata": {
66
+ "consumer_id": "fc136a18-af0c-4d36-4743-1babb89cbbd0",
67
+ "order_id": "572c0ae0-bdb8-4e68-a5fd-8ac15870f2fe",
68
+ "tenant_id": "4dd607b1-565f-4da4-722c-2e84c5c87f43"
69
+ }
70
+ }
71
+ ],
72
+ "reset_pwd": true,
73
+ "date_created": "2020-05-05T14:34:58.435Z",
74
+ "date_modified": "2020-05-07T14:38:08.271Z"
75
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "total_records": 1,
3
+ "page": 1,
4
+ "total_pages": 1,
5
+ "records": [
6
+ {
7
+ "order_id": "2f02be2c-0cbc-4980-bd8f-b2dee986c885",
8
+ "consumer_id": "6dadcf93-5305-4c4b-4136-465f9cd6d5e6",
9
+ "applicant": {
10
+ "role": "patient",
11
+ "email": "validemail@financialapps.com",
12
+ "first_name": "Documents",
13
+ "last_name": "Testing"
14
+ },
15
+ "reference_no": "REFNO87687687",
16
+ "esign_documents": [
17
+ {
18
+ "document_id": "",
19
+ "template_id": "f6e9c513486c6a9468209a91ec14c25258eed515",
20
+ "name": "BH Form"
21
+ }
22
+ ],
23
+ "completed_documents": [],
24
+ "tag": "approved",
25
+ "status": 1,
26
+ "signature_requests": null,
27
+ "reset_pwd": false,
28
+ "date_created": "2020-05-05T14:12:21.428Z",
29
+ "date_modified": null
30
+ }
31
+ ]
32
+ }
@@ -0,0 +1,6 @@
1
+ [
2
+ {
3
+ "template_id": "f6e9c513486c6a9468209a91ec14c25258eed515",
4
+ "name": "BH Form"
5
+ }
6
+ ]
@@ -0,0 +1,5 @@
1
+ {
2
+ "messages": [
3
+ "order id is invalid"
4
+ ]
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "messages": [
3
+ "signature id not found"
4
+ ]
5
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "sign_url": "https://sign_url.com",
3
+ "expires_at": 1588953702
4
+ }
@@ -0,0 +1,36 @@
1
+ [
2
+ {
3
+ "_id": "5e4c44a5b778c00001a81277",
4
+ "consumer_id": "1f50bddc-4cbf-4e16-6782-a2295d695d4e",
5
+ "date_synced": "2020-02-18T20:10:13.469Z",
6
+ "document": {
7
+ "form_type": "schedule_d",
8
+ "id": 34790,
9
+ "net_long_term_gain_loss": 1275,
10
+ "net_short_term_gain_loss": 2,
11
+ "tax_period_ends_at": "2017-12-31"
12
+ },
13
+ "document_id": "5e4c44a5b778c00001a81277",
14
+ "record_id": "5e4c44a46c20ec0001e3a505",
15
+ "tax_period_ends_at": "2017-12-31",
16
+ "tenant_id": "4dd607b1-565f-4da4-722c-2e84c5c87f43",
17
+ "type": "schedule_d"
18
+ },
19
+ {
20
+ "_id": "5e4c44a5b778c00001a81278",
21
+ "consumer_id": "1f50bddc-4cbf-4e16-6782-a2295d695d4e",
22
+ "date_synced": "2020-02-18T20:10:13.469Z",
23
+ "document": {
24
+ "form_type": "schedule_d",
25
+ "id": 34793,
26
+ "net_long_term_gain_loss": 5816,
27
+ "net_short_term_gain_loss": 0,
28
+ "tax_period_ends_at": "2018-12-31"
29
+ },
30
+ "document_id": "5e4c44a5b778c00001a81278",
31
+ "record_id": "5e4c44a46c20ec0001e3a505",
32
+ "tax_period_ends_at": "2018-12-31",
33
+ "tenant_id": "4dd607b1-565f-4da4-722c-2e84c5c87f43",
34
+ "type": "schedule_d"
35
+ }
36
+ ]
@@ -0,0 +1,35 @@
1
+ {
2
+ "_id": "5e4c44a5b778c00001a81275",
3
+ "consumer_id": "1f50bddc-4cbf-4e16-6782-a2295d695d4e",
4
+ "date_synced": "2020-02-18T20:10:13.245Z",
5
+ "document": {
6
+ "adjusted_gross_income": "",
7
+ "adjusted_gross_income_per_computer": "",
8
+ "business_income_or_loss_schedule_c": 0,
9
+ "farm_income_or_loss_schedule_f": 0,
10
+ "filer": {
11
+ "name": "BEN SMIT",
12
+ "ssn": "XXX-XX-5890"
13
+ },
14
+ "filing_status": "Married Filing Jointly",
15
+ "form_type": "1040",
16
+ "id": 34789,
17
+ "ordinary_dividend_income": 934,
18
+ "other_income": 0,
19
+ "qualified_dividends": 671,
20
+ "refunds_of_state_local_taxes": 287,
21
+ "rent_royalty_partnership_estate_schedule_e": 63561,
22
+ "tax_period_ends_at": "2017-12-31",
23
+ "taxable_social_security_benefits": 0,
24
+ "total_income": 297045,
25
+ "total_income_per_computer": 297045,
26
+ "total_social_security_benefits": 0,
27
+ "unemployment_compensation": 0,
28
+ "wages_salaries_tips_etc": 230681
29
+ },
30
+ "document_id": "5e4c44a5b778c00001a81275",
31
+ "record_id": "5e4c44a46c20ec0001e3a505",
32
+ "tax_period_ends_at": "2017-12-31",
33
+ "tenant_id": "4dd607b1-565f-4da4-722c-2e84c5c87f43",
34
+ "type": "form_1040"
35
+ }
@@ -1,17 +1,25 @@
1
- {
2
- "_id": "string",
3
- "consumer_id": "string",
4
- "date_exchanged": "2019-12-17T14:50:00Z",
5
- "date_modified": "2019-12-17T14:50:00Z",
6
- "documents": [
7
- {
8
- "count": 0,
9
- "date_synced": "2019-12-17T14:50:00Z",
10
- "document_id": "string",
11
- "downloaded": true,
12
- "type": "string"
13
- }
14
- ],
15
- "error": "string",
16
- "status": 0
17
- }
1
+
2
+ {
3
+ "_id": "string",
4
+ "consumer_id": "string",
5
+ "date_exchanged": "2020-02-19T14:13:34Z",
6
+ "date_modified": "2020-02-19T14:13:34Z",
7
+ "documents": [
8
+ {
9
+ "date_synced": "2020-02-19T14:13:34Z",
10
+ "document_id": "string",
11
+ "tax_period_ends_at": "string",
12
+ "type": "string"
13
+ }
14
+ ],
15
+ "downloaded_documents": [
16
+ {
17
+ "provider_id": 0,
18
+ "successful": true,
19
+ "tax_period_ends_at": "string",
20
+ "type": "string"
21
+ }
22
+ ],
23
+ "error": "string",
24
+ "status": 0
25
+ }
@@ -1,81 +1,157 @@
1
1
  [
2
2
  {
3
- "_id": "5df7eadbfe13f5000148ca0e",
4
- "consumer_id": "594625b4-e8fe-40b7-422f-f758bb877ae7",
3
+ "_id": "5e4c44a46c20ec0001e3a505",
4
+ "consumer_id": "1f50bddc-4cbf-4e16-6782-a2295d695d4e",
5
5
  "status": 2,
6
6
  "error": "",
7
- "date_exchanged": "2019-12-16T20:36:43.342Z",
8
- "date_modified": "2019-12-16T20:36:45.59Z",
7
+ "date_exchanged": "2020-02-18T20:10:12.887Z",
8
+ "date_modified": "2020-02-18T20:10:16.321Z",
9
9
  "documents": [
10
10
  {
11
11
  "type": "form_1040",
12
- "document_id": "5df7eadbc496df0001e9daa0",
13
- "count": 2,
14
- "downloaded": false,
15
- "date_synced": "2019-12-16T20:36:43.537Z"
12
+ "document_id": "5e4c44a5b778c00001a81275",
13
+ "tax_period_ends_at": "2017-12-31",
14
+ "date_synced": "2020-02-18T20:10:13.245Z"
16
15
  },
17
16
  {
18
- "type": "schedule_c",
19
- "document_id": "5df7eadbc496df0001e9daa1",
20
- "count": 0,
21
- "downloaded": false,
22
- "date_synced": "2019-12-16T20:36:43.613Z"
17
+ "type": "form_1040",
18
+ "document_id": "5e4c44a5b778c00001a81276",
19
+ "tax_period_ends_at": "2018-12-31",
20
+ "date_synced": "2020-02-18T20:10:13.245Z"
23
21
  },
24
22
  {
25
23
  "type": "schedule_d",
26
- "document_id": "5df7eadbc496df0001e9daa2",
27
- "count": 2,
28
- "downloaded": false,
29
- "date_synced": "2019-12-16T20:36:43.676Z"
24
+ "document_id": "5e4c44a5b778c00001a81277",
25
+ "tax_period_ends_at": "2017-12-31",
26
+ "date_synced": "2020-02-18T20:10:13.469Z"
27
+ },
28
+ {
29
+ "type": "schedule_d",
30
+ "document_id": "5e4c44a5b778c00001a81278",
31
+ "tax_period_ends_at": "2018-12-31",
32
+ "date_synced": "2020-02-18T20:10:13.469Z"
33
+ },
34
+ {
35
+ "type": "schedule_e",
36
+ "document_id": "5e4c44a5b778c00001a81279",
37
+ "tax_period_ends_at": "2017-12-31",
38
+ "date_synced": "2020-02-18T20:10:13.7Z"
30
39
  },
31
40
  {
32
41
  "type": "schedule_e",
33
- "document_id": "5df7eadbc496df0001e9daa3",
34
- "count": 2,
35
- "downloaded": false,
36
- "date_synced": "2019-12-16T20:36:43.737Z"
42
+ "document_id": "5e4c44a5b778c00001a8127a",
43
+ "tax_period_ends_at": "2018-12-31",
44
+ "date_synced": "2020-02-18T20:10:13.7Z"
37
45
  },
38
46
  {
39
47
  "type": "schedule_k1_form_1065",
40
- "document_id": "5df7eadbc496df0001e9daa4",
41
- "count": 1,
42
- "downloaded": false,
43
- "date_synced": "2019-12-16T20:36:43.807Z"
48
+ "document_id": "5e4c44a5b778c00001a8127b",
49
+ "tax_period_ends_at": "2017-12-31",
50
+ "date_synced": "2020-02-18T20:10:13.78Z"
51
+ },
52
+ {
53
+ "type": "schedule_k1_form_1120s",
54
+ "document_id": "5e4c44a5b778c00001a8127c",
55
+ "tax_period_ends_at": "2017-12-31",
56
+ "date_synced": "2020-02-18T20:10:13.881Z"
44
57
  },
45
58
  {
46
59
  "type": "schedule_k1_form_1120s",
47
- "document_id": "5df7eadbc496df0001e9daa5",
48
- "count": 2,
49
- "downloaded": false,
50
- "date_synced": "2019-12-16T20:36:43.912Z"
60
+ "document_id": "5e4c44a5b778c00001a8127d",
61
+ "tax_period_ends_at": "2018-12-31",
62
+ "date_synced": "2020-02-18T20:10:13.881Z"
51
63
  },
52
64
  {
53
65
  "type": "form_w2",
54
- "document_id": "5df7eadcc496df0001e9daa6",
55
- "count": 1,
56
- "downloaded": false,
57
- "date_synced": "2019-12-16T20:36:44.015Z"
66
+ "document_id": "5e4c44a5b778c00001a8127e",
67
+ "tax_period_ends_at": "2017-12-31",
68
+ "date_synced": "2020-02-18T20:10:13.972Z"
58
69
  },
59
70
  {
60
71
  "type": "form_1099_div",
61
- "document_id": "5df7eaddc496df0001e9daa9",
62
- "count": 4,
63
- "downloaded": false,
64
- "date_synced": "2019-12-16T20:36:45.441Z"
72
+ "document_id": "5e4c44a6b778c00001a8127f",
73
+ "tax_period_ends_at": "2017-12-31",
74
+ "date_synced": "2020-02-18T20:10:14.082Z"
75
+ },
76
+ {
77
+ "type": "form_1099_div",
78
+ "document_id": "5e4c44a6b778c00001a81280",
79
+ "tax_period_ends_at": "2017-12-31",
80
+ "date_synced": "2020-02-18T20:10:14.082Z"
81
+ },
82
+ {
83
+ "type": "form_1099_div",
84
+ "document_id": "5e4c44a6b778c00001a81281",
85
+ "tax_period_ends_at": "2018-12-31",
86
+ "date_synced": "2020-02-18T20:10:14.082Z"
87
+ },
88
+ {
89
+ "type": "form_1099_div",
90
+ "document_id": "5e4c44a6b778c00001a81282",
91
+ "tax_period_ends_at": "2018-12-31",
92
+ "date_synced": "2020-02-18T20:10:14.082Z"
65
93
  },
66
94
  {
67
95
  "type": "form_1099_int",
68
- "document_id": "5df7eaddc496df0001e9daaa",
69
- "count": 2,
70
- "downloaded": false,
71
- "date_synced": "2019-12-16T20:36:45.501Z"
96
+ "document_id": "5e4c44a6b778c00001a81283",
97
+ "tax_period_ends_at": "2017-12-31",
98
+ "date_synced": "2020-02-18T20:10:14.223Z"
99
+ },
100
+ {
101
+ "type": "form_1099_int",
102
+ "document_id": "5e4c44a6b778c00001a81284",
103
+ "tax_period_ends_at": "2018-12-31",
104
+ "date_synced": "2020-02-18T20:10:14.223Z"
105
+ },
106
+ {
107
+ "type": "form_5498",
108
+ "document_id": "5e4c44a6b778c00001a81285",
109
+ "tax_period_ends_at": "2017-12-31",
110
+ "date_synced": "2020-02-18T20:10:14.34Z"
72
111
  },
73
112
  {
74
113
  "type": "form_5498",
75
- "document_id": "5df7eaddc496df0001e9daab",
76
- "count": 4,
77
- "downloaded": false,
78
- "date_synced": "2019-12-16T20:36:45.587Z"
114
+ "document_id": "5e4c44a6b778c00001a81286",
115
+ "tax_period_ends_at": "2017-12-31",
116
+ "date_synced": "2020-02-18T20:10:14.34Z"
117
+ },
118
+ {
119
+ "type": "form_5498",
120
+ "document_id": "5e4c44a6b778c00001a81287",
121
+ "tax_period_ends_at": "2017-12-31",
122
+ "date_synced": "2020-02-18T20:10:14.34Z"
123
+ },
124
+ {
125
+ "type": "form_5498",
126
+ "document_id": "5e4c44a6b778c00001a81288",
127
+ "tax_period_ends_at": "2017-12-31",
128
+ "date_synced": "2020-02-18T20:10:14.34Z"
129
+ }
130
+ ],
131
+ "downloaded_documents": [
132
+ {
133
+ "provider_id": 7661,
134
+ "type": "tax_return",
135
+ "tax_period_ends_at": "2017-12-31",
136
+ "successful": false
137
+ },
138
+ {
139
+ "provider_id": 7662,
140
+ "type": "tax_return",
141
+ "tax_period_ends_at": "2018-12-31",
142
+ "successful": false
143
+ },
144
+ {
145
+ "provider_id": 7663,
146
+ "type": "wage_and_income",
147
+ "tax_period_ends_at": "2017-12-31",
148
+ "successful": false
149
+ },
150
+ {
151
+ "provider_id": 7664,
152
+ "type": "wage_and_income",
153
+ "tax_period_ends_at": "2018-12-31",
154
+ "successful": false
79
155
  }
80
156
  ]
81
157
  }