access 1.1.7 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +2 -0
  4. data/.travis.yml +12 -0
  5. data/Guardfile +7 -0
  6. data/README.md +159 -23
  7. data/Rakefile +13 -0
  8. data/access.gemspec +6 -1
  9. data/bin/console +14 -0
  10. data/bin/setup +7 -0
  11. data/lib/access.rb +21 -10
  12. data/lib/access/api.rb +188 -64
  13. data/lib/access/autocomplete.rb +11 -0
  14. data/lib/access/campaign.rb +24 -0
  15. data/lib/access/category.rb +16 -2
  16. data/lib/access/channel.rb +24 -0
  17. data/lib/access/city_savings.rb +16 -0
  18. data/lib/access/config.rb +8 -7
  19. data/lib/access/error.rb +8 -2
  20. data/lib/access/filter.rb +30 -2
  21. data/lib/access/info.rb +13 -0
  22. data/lib/access/link.rb +17 -0
  23. data/lib/access/location.rb +17 -2
  24. data/lib/access/member.rb +11 -0
  25. data/lib/access/oauth_application.rb +31 -0
  26. data/lib/access/offer.rb +24 -20
  27. data/lib/access/redeem.rb +11 -4
  28. data/lib/access/report.rb +10 -0
  29. data/lib/access/request.rb +25 -20
  30. data/lib/access/response.rb +127 -0
  31. data/lib/access/spot.rb +28 -0
  32. data/lib/access/store.rb +16 -2
  33. data/lib/access/token.rb +18 -0
  34. data/lib/access/verify.rb +11 -2
  35. data/lib/access/version.rb +1 -1
  36. data/test/access/autocomplete_test.rb +53 -0
  37. data/test/access/category_test.rb +64 -0
  38. data/test/access/city_savings_test.rb +5 -0
  39. data/test/access/filter_test.rb +40 -0
  40. data/test/access/location_test.rb +59 -0
  41. data/test/access/member_test.rb +5 -0
  42. data/test/access/oauth_application_test.rb +91 -0
  43. data/test/access/offer_test.rb +71 -0
  44. data/test/access/redeem_test.rb +38 -0
  45. data/test/access/report_test.rb +36 -0
  46. data/test/access/store_test.rb +65 -0
  47. data/test/access/token_test.rb +35 -0
  48. data/test/access/verify_test.rb +29 -0
  49. data/test/access/version_test.rb +9 -0
  50. data/test/fixtures/autocomplete_search.yml +207 -0
  51. data/test/fixtures/autocomplete_search_categories.yml +181 -0
  52. data/test/fixtures/autocomplete_search_locations.yml +173 -0
  53. data/test/fixtures/autocomplete_search_offers.yml +181 -0
  54. data/test/fixtures/autocomplete_search_stores.yml +185 -0
  55. data/test/fixtures/category_find.yml +303 -0
  56. data/test/fixtures/category_search.yml +683 -0
  57. data/test/fixtures/category_search_fail_member_key.yml +102 -0
  58. data/test/fixtures/filter_find.yml +70 -0
  59. data/test/fixtures/filter_search.yml +195 -0
  60. data/test/fixtures/location_find.yml +923 -0
  61. data/test/fixtures/location_search.yml +378 -0
  62. data/test/fixtures/location_search_fail_member_key.yml +367 -0
  63. data/test/fixtures/national_stores.yml +4135 -0
  64. data/test/fixtures/oauth_application_find.yml +163 -0
  65. data/test/fixtures/oauth_application_search.yml +134 -0
  66. data/test/fixtures/oauth_application_search_fail_member_key.yml +268 -0
  67. data/test/fixtures/oauth_application_token_find.yml +249 -0
  68. data/test/fixtures/oauth_application_token_search.yml +98 -0
  69. data/test/fixtures/offer_find.yml +683 -0
  70. data/test/fixtures/offer_search.yml +329 -0
  71. data/test/fixtures/offer_search_fail_member_key.yml +102 -0
  72. data/test/fixtures/redeem_offer_no_redeem_type.yml +423 -0
  73. data/test/fixtures/store_find.yml +333 -0
  74. data/test/fixtures/store_search.yml +227 -0
  75. data/test/fixtures/store_search_fail_member_key.yml +102 -0
  76. data/test/fixtures/subcategory_find.yml +283 -0
  77. data/test/fixtures/token_find.yml +245 -0
  78. data/test/fixtures/token_search.yml +301 -0
  79. data/test/fixtures/verify_filter.yml +290 -0
  80. data/test/fixtures/verify_token.yml +78 -0
  81. data/test/test_helper.rb +15 -0
  82. metadata +183 -11
  83. data/test/offers/offer_test.rb +0 -5
@@ -0,0 +1,301 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://token-demo.adcrws.com/v1/oauth_applications?per_page=1
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Access-Token:
11
+ - token_without_limit
12
+ Content-Type:
13
+ - application/json
14
+ Accept:
15
+ - application/json
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Access-Control-Allow-Headers:
22
+ - Origin, X-Requested-With, Content-Type, Accept, Authorization, Access-Token
23
+ Access-Control-Allow-Methods:
24
+ - POST, GET, PUT, DELETE, OPTIONS
25
+ Access-Control-Max-Age:
26
+ - '1728000'
27
+ Access-Control-Request-Method:
28
+ - GET
29
+ Cache-Control:
30
+ - max-age=0, private, must-revalidate
31
+ Content-Type:
32
+ - application/json
33
+ Date:
34
+ - Tue, 04 Aug 2015 21:50:51 GMT
35
+ Etag:
36
+ - '"8fa469d403d7fcb9d329bd7519c95141"'
37
+ Server:
38
+ - nginx/1.6.2
39
+ Strict-Transport-Security:
40
+ - max-age=31536000
41
+ X-Content-Type-Options:
42
+ - nosniff
43
+ X-Frame-Options:
44
+ - SAMEORIGIN
45
+ X-Request-Id:
46
+ - 241554ee-0024-41e3-961f-54373b0c8e21
47
+ X-Runtime:
48
+ - '0.043381'
49
+ X-Xss-Protection:
50
+ - 1; mode=block
51
+ Content-Length:
52
+ - '778'
53
+ Connection:
54
+ - keep-alive
55
+ body:
56
+ encoding: UTF-8
57
+ string: |-
58
+ {
59
+ "info": {
60
+ "total_results": 702,
61
+ "results_per_page": 1,
62
+ "current_page": 1,
63
+ "total_pages": 702
64
+ },
65
+ "oauth_applications": [
66
+ {
67
+ "id": 22,
68
+ "name": "American Grandparents Association",
69
+ "owner_id": 235308134,
70
+ "owner_type": "Program",
71
+ "domain_urls": null,
72
+ "scopes": [
73
+ "api",
74
+ "docs"
75
+ ],
76
+ "active_tokens": [
77
+ "e4db3fb9a054e78807c431e837c49a59553c73204de91d404fe43d12c247f805"
78
+ ],
79
+ "filter": {
80
+ "filter_id": 18,
81
+ "filter_name": "Grandparents"
82
+ },
83
+ "links": {
84
+ "show_application": "https://token-demo.adcrws.com/v1/oauth_applications/22"
85
+ }
86
+ }
87
+ ],
88
+ "links": {
89
+ "next_page": "https://report-demo.adcrws.com/v1/oauth_applications?page=2"
90
+ }
91
+ }
92
+ http_version:
93
+ recorded_at: Tue, 04 Aug 2015 21:50:51 GMT
94
+ - request:
95
+ method: get
96
+ uri: https://token-demo.adcrws.com/v1/oauth_applications/22/access_tokens?per_page=1
97
+ body:
98
+ encoding: US-ASCII
99
+ string: ''
100
+ headers:
101
+ Access-Token:
102
+ - token_without_limit
103
+ Content-Type:
104
+ - application/json
105
+ Accept:
106
+ - application/json
107
+ response:
108
+ status:
109
+ code: 200
110
+ message: OK
111
+ headers:
112
+ Access-Control-Allow-Headers:
113
+ - Origin, X-Requested-With, Content-Type, Accept, Authorization, Access-Token
114
+ Access-Control-Allow-Methods:
115
+ - POST, GET, PUT, DELETE, OPTIONS
116
+ Access-Control-Max-Age:
117
+ - '1728000'
118
+ Access-Control-Request-Method:
119
+ - GET
120
+ Cache-Control:
121
+ - max-age=0, private, must-revalidate
122
+ Content-Type:
123
+ - application/json
124
+ Date:
125
+ - Wed, 05 Aug 2015 20:13:10 GMT
126
+ Etag:
127
+ - '"146748ca69664715e70d06b5a2a46e80"'
128
+ Server:
129
+ - nginx/1.6.2
130
+ Strict-Transport-Security:
131
+ - max-age=31536000
132
+ X-Content-Type-Options:
133
+ - nosniff
134
+ X-Frame-Options:
135
+ - SAMEORIGIN
136
+ X-Request-Id:
137
+ - dd4fc36f-292c-4e7a-8257-1803a56ae929
138
+ X-Runtime:
139
+ - '0.062111'
140
+ X-Xss-Protection:
141
+ - 1; mode=block
142
+ Content-Length:
143
+ - '2806'
144
+ Connection:
145
+ - keep-alive
146
+ body:
147
+ encoding: UTF-8
148
+ string: |-
149
+ {
150
+ "access_tokens": [
151
+ {
152
+ "application_id": 22,
153
+ "token": "e4db3fb9a054e78807c431e837c49a59553c73204de91d404fe43d12c247f805",
154
+ "expires_in": null,
155
+ "revoked_at": null,
156
+ "created_at": "2015-01-21T22:43:31.006Z",
157
+ "oauth_access_token_id": 43,
158
+ "application_name": "American Grandparents Association",
159
+ "application_owner_id": 22,
160
+ "application_owner_type": "Program",
161
+ "program_id": 235308134,
162
+ "program_name": "American Grandparents Association",
163
+ "program_customer_identifier": "102149",
164
+ "program_start_dts": "2015-01-21T15:12:55.570Z",
165
+ "program_end_dts": "2018-01-21T15:12:56.000Z",
166
+ "organization_id": 2001959,
167
+ "organization_name": "American Grandparents Association",
168
+ "organization_customer_identifier": "2001923",
169
+ "filter_id": 18,
170
+ "filter_name": "Grandparents",
171
+ "filter": "{\"offers\":[{\"or\":[{\"terms\":{\"categories.category_key\":[39,44,48,59,1039,54,45,50]}},{\"terms\":{\"categories.category_parent_key\":[39,44,48,59,1039,54,45,50]}}]}],\"categories\":[{\"or\":[{\"terms\":{\"category_key\":[39,44,48,59,1039,54,45,50]}},{\"terms\":{\"category_parent_key\":[39,44,48,59,1039,54,45,50]}}]}],\"stores\":[{\"or\":[{\"terms\":{\"store_categories.category_key\":[39,44,48,59,1039,54,45,50]}},{\"terms\":{\"store_categories.category_parent_key\":[39,44,48,59,1039,54,45,50]}}]}]}",
172
+ "program_filter_id": {
173
+ "filter_id": 18,
174
+ "filter_name": "Grandparents",
175
+ "filter": "---\noffers:\n- or:\n - terms:\n categories.category_key:\n - 39\n - 44\n - 48\n - 59\n - 1039\n - 54\n - 45\n - 50\n - terms:\n categories.category_parent_key:\n - 39\n - 44\n - 48\n - 59\n - 1039\n - 54\n - 45\n - 50\ncategories:\n- or:\n - terms:\n category_key:\n - 39\n - 44\n - 48\n - 59\n - 1039\n - 54\n - 45\n - 50\n - terms:\n category_parent_key:\n - 39\n - 44\n - 48\n - 59\n - 1039\n - 54\n - 45\n - 50\nstores:\n- or:\n - terms:\n store_categories.category_key:\n - 39\n - 44\n - 48\n - 59\n - 1039\n - 54\n - 45\n - 50\n - terms:\n store_categories.category_parent_key:\n - 39\n - 44\n - 48\n - 59\n - 1039\n - 54\n - 45\n - 50\n",
176
+ "modified_dts": "2015-06-03T17:31:13.774Z",
177
+ "created_dts": "2015-02-26T13:18:12.299Z"
178
+ },
179
+ "domains": [
180
+
181
+ ],
182
+ "application_scopes": [
183
+ "api",
184
+ "docs"
185
+ ],
186
+ "token_status": "valid",
187
+ "links": {
188
+ "show_token": "https://token-demo.adcrws.com/v1/oauth_applications/22/access_tokens/43"
189
+ }
190
+ }
191
+ ]
192
+ }
193
+ http_version:
194
+ recorded_at: Wed, 05 Aug 2015 20:13:09 GMT
195
+ - request:
196
+ method: get
197
+ uri: https://token-demo.adcrws.com/v1/tokens?per_page=1
198
+ body:
199
+ encoding: US-ASCII
200
+ string: ''
201
+ headers:
202
+ Access-Token:
203
+ - token_without_limit
204
+ Content-Type:
205
+ - application/json
206
+ Accept:
207
+ - application/json
208
+ response:
209
+ status:
210
+ code: 200
211
+ message: OK
212
+ headers:
213
+ Access-Control-Allow-Headers:
214
+ - Origin, X-Requested-With, Content-Type, Accept, Authorization, Access-Token
215
+ Access-Control-Allow-Methods:
216
+ - POST, GET, PUT, DELETE, OPTIONS
217
+ Access-Control-Max-Age:
218
+ - '1728000'
219
+ Access-Control-Request-Method:
220
+ - GET
221
+ Cache-Control:
222
+ - max-age=0, private, must-revalidate
223
+ Content-Type:
224
+ - application/json
225
+ Date:
226
+ - Wed, 12 Aug 2015 17:46:36 GMT
227
+ Etag:
228
+ - '"bf1afd7f0dde6cceb86c0e054f295a6b"'
229
+ Server:
230
+ - nginx/1.6.2
231
+ Strict-Transport-Security:
232
+ - max-age=31536000
233
+ X-Content-Type-Options:
234
+ - nosniff
235
+ X-Frame-Options:
236
+ - SAMEORIGIN
237
+ X-Request-Id:
238
+ - 1fee0c9f-a520-49f4-a48e-eb88a2a640ad
239
+ X-Runtime:
240
+ - '0.014374'
241
+ X-Xss-Protection:
242
+ - 1; mode=block
243
+ Content-Length:
244
+ - '1976'
245
+ Connection:
246
+ - keep-alive
247
+ body:
248
+ encoding: UTF-8
249
+ string: |-
250
+ {
251
+ "info": {
252
+ "total_results": 1067,
253
+ "results_per_page": 1,
254
+ "current_page": 1,
255
+ "total_pages": 1067
256
+ },
257
+ "oauth_tokens": [
258
+ {
259
+ "application_id": 825,
260
+ "token": "fcf4e7ee693a61155d1a40a0ca7577cc95ec785742a0ca295503185e290711e4",
261
+ "expires_in": null,
262
+ "revoked_at": null,
263
+ "created_at": "2015-08-11T15:54:04.086-06:00",
264
+ "oauth_access_token_id": 942,
265
+ "application_name": "Loylogic (pcid:200090)",
266
+ "application_owner_id": 235589794,
267
+ "application_owner_type": "Program",
268
+ "program_id": 235589794,
269
+ "program_name": "Loylogic",
270
+ "program_customer_identifier": "200090",
271
+ "program_start_dts": "2015-08-11T15:54:45.783-06:00",
272
+ "program_end_dts": "2018-08-11T15:54:45.783-06:00",
273
+ "organization_id": 2001157,
274
+ "organization_name": "Loylogic",
275
+ "organization_customer_identifier": "2001157",
276
+ "filter_id": 35,
277
+ "filter_name": "Dining, Entertainment, Health/Beauty, Hotel, Services, Shopping",
278
+ "filter": "{\"offers\":[{\"or\":[{\"terms\":{\"categories.category_key\":[39,59,53,44,50,45]}},{\"terms\":{\"categories.category_parent_key\":[39,59,53,44,50,45]}}]}],\"categories\":[{\"or\":[{\"terms\":{\"category_key\":[39,59,53,44,50,45]}},{\"terms\":{\"category_parent_key\":[39,59,53,44,50,45]}}]}],\"stores\":[{\"or\":[{\"terms\":{\"store_categories.category_key\":[39,59,53,44,50,45]}},{\"terms\":{\"store_categories.category_parent_key\":[39,59,53,44,50,45]}}]}]}",
279
+ "program_filter_id": 158,
280
+ "domains": [
281
+
282
+ ],
283
+ "application_scopes": [
284
+ "api",
285
+ "docs",
286
+ "internal"
287
+ ],
288
+ "indexed_at": "2015-08-12T14:08:41.744Z",
289
+ "token_status": "valid",
290
+ "links": {
291
+ "show_oauth_token": "http://token-demo.adcrws.com/v1/tokens/fcf4e7ee693a61155d1a40a0ca7577cc95ec785742a0ca295503185e290711e4"
292
+ }
293
+ }
294
+ ],
295
+ "links": {
296
+ "next_page": "https://token-demo.adcrws.com/v1/tokens?page=2&per_page=1"
297
+ }
298
+ }
299
+ http_version:
300
+ recorded_at: Wed, 12 Aug 2015 17:46:36 GMT
301
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,290 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://token-demo.adcrws.com/v1/filter
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"program_filter": {"offers": [{"or":[{"terms":{"categories.category_key":[
9
+ 39, 1007, 1008, 1009, 1010, 1011, 1012 ] } }, {"terms":{"categories.category_parent_key":[
10
+ 39, 1007, 1008, 1009, 1010, 1011, 1012]} } ]}, {"not": {"or": [{"terms":{"categories.category_key":[
11
+ 1007 ] } }, {"terms":{"categories.category_parent_key":[ 1007 ] } } ] } }
12
+ ] } }'
13
+ headers:
14
+ Access-Token:
15
+ - token_without_limit
16
+ Content-Type:
17
+ - application/json
18
+ Accept:
19
+ - application/json
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Access-Control-Allow-Headers:
26
+ - Origin, X-Requested-With, Content-Type, Accept, Authorization, Access-Token
27
+ Access-Control-Allow-Methods:
28
+ - POST, GET, PUT, DELETE, OPTIONS
29
+ Access-Control-Max-Age:
30
+ - '1728000'
31
+ Access-Control-Request-Method:
32
+ - GET
33
+ Cache-Control:
34
+ - max-age=0, private, must-revalidate
35
+ Content-Type:
36
+ - application/json
37
+ Date:
38
+ - Wed, 12 Aug 2015 17:46:35 GMT
39
+ Etag:
40
+ - '"5a395c4bf2ad27ac472ecaf3cb0fbe82"'
41
+ Server:
42
+ - nginx/1.6.2
43
+ Strict-Transport-Security:
44
+ - max-age=31536000
45
+ X-Content-Type-Options:
46
+ - nosniff
47
+ X-Frame-Options:
48
+ - SAMEORIGIN
49
+ X-Request-Id:
50
+ - e3dded6b-f0f1-41fa-ab29-ac7e8167c34b
51
+ X-Runtime:
52
+ - '0.087726'
53
+ X-Xss-Protection:
54
+ - 1; mode=block
55
+ Content-Length:
56
+ - '5997'
57
+ Connection:
58
+ - keep-alive
59
+ body:
60
+ encoding: UTF-8
61
+ string: |-
62
+ {
63
+ "offers": {
64
+ "offer_count": 74275,
65
+ "categories": [
66
+ {
67
+ "category_name": "Dining & Food",
68
+ "category_key": 39,
69
+ "category_type": "category",
70
+ "offer_count": 74275,
71
+ "subcategories": [
72
+ {
73
+ "category_name": "Fast Food",
74
+ "category_key": 1008,
75
+ "category_type": "subcategory",
76
+ "category_parent_key": 39,
77
+ "offer_count": 39088
78
+ },
79
+ {
80
+ "category_name": "Casual & Fine Dining",
81
+ "category_key": 1009,
82
+ "category_type": "subcategory",
83
+ "category_parent_key": 39,
84
+ "offer_count": 33187
85
+ },
86
+ {
87
+ "category_name": "Convenience Stores",
88
+ "category_key": 1012,
89
+ "category_type": "subcategory",
90
+ "category_parent_key": 39,
91
+ "offer_count": 1956
92
+ },
93
+ {
94
+ "category_name": "Specialty Foods & Gifts",
95
+ "category_key": 1010,
96
+ "category_type": "subcategory",
97
+ "category_parent_key": 39,
98
+ "offer_count": 337
99
+ },
100
+ {
101
+ "category_name": "Catering",
102
+ "category_key": 1011,
103
+ "category_type": "subcategory",
104
+ "category_parent_key": 39,
105
+ "offer_count": 35
106
+ }
107
+ ]
108
+ },
109
+ {
110
+ "category_name": "Health & Beauty",
111
+ "category_key": 53,
112
+ "category_type": "category",
113
+ "offer_count": 34,
114
+ "subcategories": [
115
+ {
116
+ "category_name": "Salon",
117
+ "category_key": 1036,
118
+ "category_type": "subcategory",
119
+ "category_parent_key": 53,
120
+ "offer_count": 34
121
+ }
122
+ ]
123
+ },
124
+ {
125
+ "category_name": "Entertainment & Recreation",
126
+ "category_key": 59,
127
+ "category_type": "category",
128
+ "offer_count": 29,
129
+ "subcategories": [
130
+ {
131
+ "category_name": "Fun Centers",
132
+ "category_key": 1013,
133
+ "category_type": "subcategory",
134
+ "category_parent_key": 59,
135
+ "offer_count": 15
136
+ },
137
+ {
138
+ "category_name": "Outdoor Adventure",
139
+ "category_key": 1016,
140
+ "category_type": "subcategory",
141
+ "category_parent_key": 59,
142
+ "offer_count": 4
143
+ },
144
+ {
145
+ "category_name": "Concerts & Events",
146
+ "category_key": 1014,
147
+ "category_type": "subcategory",
148
+ "category_parent_key": 59,
149
+ "offer_count": 2
150
+ },
151
+ {
152
+ "category_name": "Sporting Events",
153
+ "category_key": 1017,
154
+ "category_type": "subcategory",
155
+ "category_parent_key": 59,
156
+ "offer_count": 1
157
+ },
158
+ {
159
+ "category_name": "Amusement Parks",
160
+ "category_key": 1018,
161
+ "category_type": "subcategory",
162
+ "category_parent_key": 59,
163
+ "offer_count": 1
164
+ },
165
+ {
166
+ "category_name": "Classes",
167
+ "category_key": 1019,
168
+ "category_type": "subcategory",
169
+ "category_parent_key": 59,
170
+ "offer_count": 1
171
+ }
172
+ ]
173
+ },
174
+ {
175
+ "category_name": "Automotive",
176
+ "category_key": 51,
177
+ "category_type": "category",
178
+ "offer_count": 12,
179
+ "subcategories": [
180
+ {
181
+ "category_name": "Gas Station",
182
+ "category_key": 1004,
183
+ "category_type": "subcategory",
184
+ "category_parent_key": 51,
185
+ "offer_count": 11
186
+ },
187
+ {
188
+ "category_name": "Auto Body & Paint",
189
+ "category_key": 1000,
190
+ "category_type": "subcategory",
191
+ "category_parent_key": 51,
192
+ "offer_count": 1
193
+ }
194
+ ]
195
+ },
196
+ {
197
+ "category_name": "Golf",
198
+ "category_key": 48,
199
+ "category_type": "category",
200
+ "offer_count": 8,
201
+ "subcategories": [
202
+ {
203
+ "category_name": "Golf Courses",
204
+ "category_key": 1020,
205
+ "category_type": "subcategory",
206
+ "category_parent_key": 48,
207
+ "offer_count": 8
208
+ }
209
+ ]
210
+ },
211
+ {
212
+ "category_name": "Shopping",
213
+ "category_key": 45,
214
+ "category_type": "category",
215
+ "offer_count": 3,
216
+ "subcategories": [
217
+ {
218
+ "category_name": "Crafts",
219
+ "category_key": 1083,
220
+ "category_type": "subcategory",
221
+ "category_parent_key": 45,
222
+ "offer_count": 1
223
+ },
224
+ {
225
+ "category_name": "Department Stores",
226
+ "category_key": 1085,
227
+ "category_type": "subcategory",
228
+ "category_parent_key": 45,
229
+ "offer_count": 1
230
+ },
231
+ {
232
+ "category_name": "Pets",
233
+ "category_key": 1097,
234
+ "category_type": "subcategory",
235
+ "category_parent_key": 45,
236
+ "offer_count": 1
237
+ }
238
+ ]
239
+ },
240
+ {
241
+ "category_name": "Services",
242
+ "category_key": 50,
243
+ "category_type": "category",
244
+ "offer_count": 1,
245
+ "subcategories": [
246
+
247
+ ]
248
+ },
249
+ {
250
+ "category_name": "Cruise",
251
+ "category_key": 60,
252
+ "category_type": "category",
253
+ "offer_count": 1,
254
+ "subcategories": [
255
+
256
+ ]
257
+ }
258
+ ],
259
+ "redemption_methods": [
260
+ {
261
+ "redemption_method": "instore_print",
262
+ "offer_count": 53662
263
+ },
264
+ {
265
+ "redemption_method": "instore",
266
+ "offer_count": 28674
267
+ },
268
+ {
269
+ "redemption_method": "link",
270
+ "offer_count": 20720
271
+ },
272
+ {
273
+ "redemption_method": "call",
274
+ "offer_count": 25
275
+ }
276
+ ]
277
+ },
278
+ "categories": {
279
+ "category_count": 127
280
+ },
281
+ "stores": {
282
+ "store_count": 25425
283
+ },
284
+ "locations": {
285
+ "location_count": 204899
286
+ }
287
+ }
288
+ http_version:
289
+ recorded_at: Wed, 12 Aug 2015 17:46:35 GMT
290
+ recorded_with: VCR 2.9.3