patreon 0.4.0 → 0.5.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
  SHA1:
3
- metadata.gz: 85f8e4342d5367269d2d626762f48635d644faa2
4
- data.tar.gz: 0e4937dfd8eadf081d338027e36c49ac607e8926
3
+ metadata.gz: 642b92cbf47116d9f5dd6f44826aab39004e4a47
4
+ data.tar.gz: da5be67acca963b34593b1caa8f9a190c35c2a06
5
5
  SHA512:
6
- metadata.gz: 688fbbca091fc34af6e0f78b85a92b0ffaad3e75f19c15206a2ce166a4c1019dd5db6f44bd6013b9b208f3dc7cfee98f3aca0ede846b3da5ce6699092d3aff52
7
- data.tar.gz: fa8cf4c8ae5e76269dc5181e30966d7599e24baf343ba4bcf6b99db7b893aaa31303078f6ac894ff64b66448b7740be10a6272c91e36a2b527a2565199c2d705
6
+ metadata.gz: 76461ccff6e1a0bed39cca17a28ba791f25f551591a723278db385357d65d43af8b20a7ccfb05099ee095b5d40796389ff7f7592f46e9844a5408e81a53d30da
7
+ data.tar.gz: 42bc8fb89fad12c1797c81bc37b72ad553691eb0fde35ed3042ef0030541bc96a7093a0aff783c12896ac42cf0782013ba3b1bb85b888b0e6cf258a30ba601b1
@@ -0,0 +1,32 @@
1
+ version: 2
2
+ jobs:
3
+ build:
4
+ parallelism: 3
5
+ docker:
6
+ - image: circleci/ruby:2.4-node
7
+ environment:
8
+ BUNDLE_JOBS: 3
9
+ BUNDLE_RETRY: 3
10
+ BUNDLE_PATH: vendor/bundle
11
+ PGHOST: 127.0.0.1
12
+ PGUSER: circleci-demo-ruby
13
+ RAILS_ENV: test
14
+ steps:
15
+ - checkout
16
+
17
+ # Which version of bundler?
18
+ - run:
19
+ name: Which bundler?
20
+ command: bundle -v
21
+
22
+ - run:
23
+ name: Bundle Install
24
+ command: bundle check || bundle install
25
+
26
+ # Run rspec in parallel
27
+ - type: shell
28
+ command: bundle exec rake test
29
+
30
+ # Save test results for timing analysis
31
+ - store_test_results:
32
+ path: test_results
@@ -1,3 +1,9 @@
1
+ # 0.5.0
2
+
3
+ * Public methods now use named arguments instead of positional arguments
4
+ * Fix includes to respect arguments Patreon::API#fetch_campaign_and_patrons
5
+ * Add tests
6
+
1
7
  # 0.4.0
2
8
 
3
9
  * Stop shipping the lockfile
@@ -0,0 +1,7 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.test_files = FileList["spec/spec_helper", "spec/**/*_test.rb"]
6
+ t.verbose = true
7
+ end
@@ -1,9 +1,18 @@
1
- $: << File.dirname(__FILE__)
1
+ require 'net/http'
2
+ require 'json'
3
+ require 'rack'
4
+ require 'net/http'
5
+ require 'json-api-vanilla'
6
+ require 'openssl'
2
7
 
3
8
  require 'patreon/utils/jsonapi/url_util'
4
9
  require 'patreon/utils/enum'
5
10
  require 'patreon/utils/client'
11
+ require 'patreon/schemas/campaign'
12
+ require 'patreon/schemas/goal'
13
+ require 'patreon/schemas/pledge'
14
+ require 'patreon/schemas/reward'
15
+ require 'patreon/schemas/user'
6
16
  require 'patreon/version'
7
- require 'patreon/schemas'
8
17
  require 'patreon/oauth'
9
18
  require 'patreon/api'
@@ -1,37 +1,38 @@
1
- require 'net/http'
2
- require 'cgi'
3
- require 'json'
4
- require 'json-api-vanilla'
5
- require 'openssl'
6
-
7
1
  module Patreon
8
2
  class API
9
3
  def initialize(access_token)
10
4
  @access_token = access_token
11
5
  end
12
6
 
13
- def fetch_user(includes=nil, fields=nil)
14
- get_json(Utils::JSONAPI::URLUtil.build_url('current_user',includes,fields))
7
+ def fetch_user(opts = {})
8
+ get_parse_json(Utils::JSONAPI::URLUtil.build_url('current_user', opts[:includes], opts[:fields]))
15
9
  end
16
10
 
17
- def fetch_campaign(includes=nil, fields=nil)
18
- get_json(Utils::JSONAPI::URLUtil.build_url('current_user/campaigns',includes,fields))
11
+ def fetch_campaign(opts = {})
12
+ get_parse_json(Utils::JSONAPI::URLUtil.build_url('current_user/campaigns', opts[:includes], opts[:fields]))
19
13
  end
20
14
 
21
- def fetch_campaign_and_patrons(includes=nil, fields=nil)
22
- includes ||= Schemas::Campaign.default_relationships + [Schemas::Campaign::Relationships::PLEDGES]
23
- fetch_campaign(includes, fields)
15
+ def fetch_campaign_and_patrons(opts = {})
16
+ opts[:includes] = opts[:includes] ? Array(opts[:includes]) : []
17
+ opts[:includes].concat(Schemas::Campaign.default_relationships + [Schemas::Campaign::Relationships::PLEDGES])
18
+ fetch_campaign(opts)
24
19
  end
25
20
 
26
- def fetch_page_of_pledges(campaign_id, page_size, cursor=nil, includes=nil, fields=nil)
27
- url = "campaigns/#{campaign_id}/pledges"
28
- url += "?page%5Bcount%5D=#{CGI::escape(page_size.to_s)}"
29
- url += "&page%5Bcursor%5D=#{CGI::escape(cursor.to_s)}" if cursor
30
- get_json(Patreon::Utils::JSONAPI::URLUtil.build_url(url,includes,fields))
21
+ def fetch_page_of_pledges(campaign_id, opts = {})
22
+ params = {}
23
+ params["page[count]"] = opts[:count] || 10
24
+ params["page[cursor]"] = opts[:cursor] if opts[:cursor]
25
+ url = "campaigns/#{campaign_id}/pledges?#{Rack::Utils.build_query(params)}"
26
+ get_parse_json(Patreon::Utils::JSONAPI::URLUtil.build_url(url, opts[:includes], opts[:fields]))
31
27
  end
32
28
 
33
29
  private
34
30
 
31
+ def get_parse_json(suffix)
32
+ json = get_json(suffix)
33
+ parse_json(json)
34
+ end
35
+
35
36
  def get_json(suffix)
36
37
  http = Net::HTTP.new("www.patreon.com", 443)
37
38
  http.use_ssl = true
@@ -45,8 +46,11 @@ module Patreon
45
46
  req = Net::HTTP::Get.new("/api/oauth2/api/#{suffix}")
46
47
  req['Authorization'] = "Bearer #{@access_token}"
47
48
  req['User-Agent'] = Utils::Client.user_agent_string
48
- res = http.request(req)
49
- return JSON::Api::Vanilla.parse(res.body)
49
+ http.request(req).body
50
+ end
51
+
52
+ def parse_json(json)
53
+ JSON::Api::Vanilla.parse(json)
50
54
  end
51
55
  end
52
56
  end
@@ -1,6 +1,3 @@
1
- require 'net/http'
2
- require 'json'
3
-
4
1
  module Patreon
5
2
  class OAuth
6
3
  def initialize(client_id, client_secret)
@@ -1,28 +1,25 @@
1
+ require 'rack'
1
2
  require 'uri'
2
3
 
3
4
  module Patreon
4
5
  module Utils
5
6
  module JSONAPI
6
7
  class URLUtil
7
- def self.build_url(path, includes=nil, fields=nil)
8
- connector = path.include?('?') ? '&' : '?'
9
- params = {}
10
- if includes
11
- params.merge!({ 'include' => joined_or_null(includes) })
12
- end
13
- if fields
14
- params.merge!(fields.reduce({}) {|memo, type_attributes|
15
- type, attributes = type_attributes
16
- memo.merge({ "fields[#{type}]" => joined_or_null(attributes) })
17
- })
18
- end
19
- return "#{path}#{connector}#{URI.encode_www_form(params)}"
8
+ def self.build_url(url, includes=nil, fields=nil)
9
+ parsed_url = URI.parse(url)
10
+ params = parsed_url.query ? Rack::Utils.parse_query(parsed_url.query) : {}
11
+ params['include'] = joined_or_null(includes) if includes
12
+ fields.each do |name, val|
13
+ params["fields[#{name}]"] = val
14
+ end if fields
15
+ query = params.empty? ? "" : "?#{Rack::Utils.build_query(params)}"
16
+
17
+ "#{parsed_url.path}#{query}"
20
18
  end
21
19
 
22
20
  private
23
-
24
- def self.joined_or_null(list)
25
- list.length == 0 ? "null" : list.join(',')
21
+ def self.joined_or_null(list_or_string)
22
+ list_or_string && list_or_string.empty? ? "null" : Array(list_or_string).join(',')
26
23
  end
27
24
  end
28
25
  end
@@ -1,3 +1,3 @@
1
1
  module Patreon
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
@@ -19,5 +19,12 @@ Gem::Specification.new do |gem|
19
19
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
20
  gem.require_paths = ["lib"]
21
21
 
22
- gem.add_runtime_dependency 'json-api-vanilla', '~> 1.0.1'
22
+ gem.add_dependency 'json-api-vanilla', '~> 1.0.1'
23
+ # left rack dependency to float because we're only using build_query, parse_query
24
+ gem.add_dependency 'rack'
25
+
26
+ gem.add_development_dependency 'minitest', '~> 5.11.3'
27
+ gem.add_development_dependency 'minitest-hooks', '~> 1.0.1'
28
+ gem.add_development_dependency 'mocha', '~> 1.3.0'
29
+ gem.add_development_dependency 'rake', '~> 12.3.0'
23
30
  end
@@ -0,0 +1,74 @@
1
+ describe Patreon::API do
2
+ before do
3
+ @api = Patreon::API.new("some token")
4
+ end
5
+
6
+ describe "Patreon::API#fetch_user" do
7
+ before(:all) do
8
+ @response = File.read(File.expand_path("fixtures/current_user.json", __dir__))
9
+ end
10
+
11
+ it "should get current_user" do
12
+ @api.expects(:get_json).with("current_user").returns(@response)
13
+ response = @api.fetch_user
14
+ assert_equal response.data.pledges.count, 5
15
+ assert_equal response.data.vanity, "corgi"
16
+ end
17
+
18
+ it "should get current_user with includes" do
19
+ @api.expects(:get_json).with("current_user?include=hello").returns(@response)
20
+ @api.fetch_user(includes: "hello")
21
+ end
22
+
23
+ it "should get current_user with fields" do
24
+ @api.expects(:get_json).with("current_user?fields%5Bhello%5D=there").returns(@response)
25
+ @api.fetch_user(fields: {hello: "there"})
26
+ end
27
+ end
28
+
29
+ describe "Patreon::API#fetch_campaign" do
30
+ before(:all) do
31
+ @response = File.read(File.expand_path("fixtures/fetch_campaign.json", __dir__))
32
+ end
33
+
34
+ it "should get fetch_campaign" do
35
+ @api.expects(:get_json).with("current_user/campaigns").returns(@response)
36
+ response = @api.fetch_campaign
37
+ assert_equal response.data.count, 1
38
+ assert_equal response.data[0].creation_name, "an unforgettable high school experience"
39
+ end
40
+
41
+ it "should get fetch_campaign with includes" do
42
+ @api.expects(:get_json).with("current_user/campaigns?include=hello").returns(@response)
43
+ @api.fetch_campaign(includes: "hello")
44
+ end
45
+
46
+ it "should get fetch_campaign with fields" do
47
+ @api.expects(:get_json).with("current_user/campaigns?fields%5Bhello%5D=there").returns(@response)
48
+ @api.fetch_campaign(fields: {hello: "there"})
49
+ end
50
+ end
51
+
52
+ describe "Patreon::API#fetch_campaign_and_patrons" do
53
+ before(:all) do
54
+ @response = File.read(File.expand_path("fixtures/fetch_campaign.json", __dir__))
55
+ end
56
+
57
+ it "should get fetch_campaign_and_patrons" do
58
+ @api.expects(:get_json).with("current_user/campaigns?include=rewards%2Ccreator%2Cgoals%2Cpledges").returns(@response)
59
+ @api.fetch_campaign_and_patrons
60
+ end
61
+
62
+ it "should get fetch_campaign_and_patrons with more includes" do
63
+ @api.expects(:get_json).with("current_user/campaigns?include=doohickey%2Crewards%2Ccreator%2Cgoals%2Cpledges").returns(@response)
64
+ @api.fetch_campaign_and_patrons(includes: "doohickey")
65
+ end
66
+ end
67
+
68
+ describe "Patreon::API#fetch_page_of_pledges" do
69
+ it "should get fetch_page_of_pledges" do
70
+ @api.expects(:get_json).with("campaigns/123/pledges?page%5Bcount%5D=10").returns(@response)
71
+ @api.fetch_page_of_pledges(123)
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,1472 @@
1
+ {
2
+ "data": {
3
+ "attributes": {
4
+ "about": "Heeeey booii",
5
+ "created": "2013-05-10T13:27:42+00:00",
6
+ "discord_id": null,
7
+ "email": "sam@ourspot.com",
8
+ "facebook": "https://www.facebook.com/foo",
9
+ "facebook_id": null,
10
+ "first_name": "Corgi",
11
+ "full_name": "Corgi Pager & Friends",
12
+ "gender": 0,
13
+ "has_password": true,
14
+ "image_url": "https://c10.patreonusercontent.com/3/eyJwIjoxLCJ2IjoiMSJ9/patreon-media/user/32187/d92af883a3fa4a3593fdec24a8baabb8?token-time=2145916800&token-hash=TC-rUQokZW9MvAGMwqtwHHInGXm3BnUqPCtQQYuzQvk%3D",
15
+ "is_deleted": false,
16
+ "is_email_verified": true,
17
+ "is_nuked": false,
18
+ "is_suspended": false,
19
+ "last_name": "Pager & Friends",
20
+ "social_connections": {
21
+ "deviantart": null,
22
+ "discord": null,
23
+ "facebook": {
24
+ "scopes": [
25
+ "public_profile",
26
+ "user_likes"
27
+ ],
28
+ "user_id": "2849114461073"
29
+ },
30
+ "spotify": null,
31
+ "twitch": {
32
+ "scopes": [
33
+ "channel_read",
34
+ "user_read",
35
+ "channel_subscriptions",
36
+ "user_subscriptions"
37
+ ],
38
+ "user_id": "13626948"
39
+ },
40
+ "twitter": null,
41
+ "youtube": null
42
+ },
43
+ "thumb_url": "https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInYiOiIxIiwidyI6MTAwfQ%3D%3D/patreon-media/user/32187/d92af883a3fa4a3593fdec24a8baabb8?token-time=2145916800&token-hash=FGeBGK0gsdI10_xLCFRJqdnjUHdrPja2h45P08Am1MI%3D",
44
+ "twitch": "https://www.twitch.tv/foo",
45
+ "twitter": "",
46
+ "url": "https://www.patreon.com/corgi",
47
+ "vanity": "corgi",
48
+ "youtube": ""
49
+ },
50
+ "id": "32187",
51
+ "relationships": {
52
+ "pledges": {
53
+ "data": [
54
+ {
55
+ "id": "3268546",
56
+ "type": "pledge"
57
+ },
58
+ {
59
+ "id": "4641935",
60
+ "type": "pledge"
61
+ },
62
+ {
63
+ "id": "5367046",
64
+ "type": "pledge"
65
+ },
66
+ {
67
+ "id": "6110391",
68
+ "type": "pledge"
69
+ },
70
+ {
71
+ "id": "10563089",
72
+ "type": "pledge"
73
+ }
74
+ ]
75
+ }
76
+ },
77
+ "type": "user"
78
+ },
79
+ "included": [
80
+ {
81
+ "attributes": {
82
+ "amount_cents": 100,
83
+ "created_at": "2016-09-30T23:01:34+00:00",
84
+ "declined_since": null,
85
+ "patron_pays_fees": false,
86
+ "pledge_cap_cents": null
87
+ },
88
+ "id": "3268546",
89
+ "relationships": {
90
+ "address": {
91
+ "data": null
92
+ },
93
+ "card": {
94
+ "data": {
95
+ "id": "cus_Bm8GhyqVtpWOfj",
96
+ "type": "card"
97
+ },
98
+ "links": {
99
+ "related": "https://www.patreon.com/api/cards/cus_Bm8GhyqVtpWOfj"
100
+ }
101
+ },
102
+ "creator": {
103
+ "data": {
104
+ "id": "36361",
105
+ "type": "user"
106
+ },
107
+ "links": {
108
+ "related": "https://www.patreon.com/api/user/36361"
109
+ }
110
+ },
111
+ "patron": {
112
+ "data": {
113
+ "id": "32187",
114
+ "type": "user"
115
+ },
116
+ "links": {
117
+ "related": "https://www.patreon.com/api/user/32187"
118
+ }
119
+ },
120
+ "reward": {
121
+ "data": null
122
+ }
123
+ },
124
+ "type": "pledge"
125
+ },
126
+ {
127
+ "attributes": {
128
+ "amount_cents": 200,
129
+ "created_at": "2016-12-07T22:35:45+00:00",
130
+ "declined_since": null,
131
+ "patron_pays_fees": false,
132
+ "pledge_cap_cents": null
133
+ },
134
+ "id": "4641935",
135
+ "relationships": {
136
+ "address": {
137
+ "data": null
138
+ },
139
+ "card": {
140
+ "data": {
141
+ "id": "cus_Bm8GhyqVtpWOfj",
142
+ "type": "card"
143
+ },
144
+ "links": {
145
+ "related": "https://www.patreon.com/api/cards/cus_Bm8GhyqVtpWOfj"
146
+ }
147
+ },
148
+ "creator": {
149
+ "data": {
150
+ "id": "2934426",
151
+ "type": "user"
152
+ },
153
+ "links": {
154
+ "related": "https://www.patreon.com/api/user/2934426"
155
+ }
156
+ },
157
+ "patron": {
158
+ "data": {
159
+ "id": "32187",
160
+ "type": "user"
161
+ },
162
+ "links": {
163
+ "related": "https://www.patreon.com/api/user/32187"
164
+ }
165
+ },
166
+ "reward": {
167
+ "data": {
168
+ "id": "1188921",
169
+ "type": "reward"
170
+ },
171
+ "links": {
172
+ "related": "https://www.patreon.com/api/rewards/1188921"
173
+ }
174
+ }
175
+ },
176
+ "type": "pledge"
177
+ },
178
+ {
179
+ "attributes": {
180
+ "amount_cents": 500,
181
+ "created_at": "2017-04-14T18:19:26.003255+00:00",
182
+ "declined_since": null,
183
+ "patron_pays_fees": false,
184
+ "pledge_cap_cents": 500
185
+ },
186
+ "id": "5367046",
187
+ "relationships": {
188
+ "address": {
189
+ "data": {
190
+ "id": "481681",
191
+ "type": "address"
192
+ },
193
+ "links": {
194
+ "related": "https://www.patreon.com/api/addresses/481681"
195
+ }
196
+ },
197
+ "card": {
198
+ "data": {
199
+ "id": "cus_Bm8GhyqVtpWOfj",
200
+ "type": "card"
201
+ },
202
+ "links": {
203
+ "related": "https://www.patreon.com/api/cards/cus_Bm8GhyqVtpWOfj"
204
+ }
205
+ },
206
+ "creator": {
207
+ "data": {
208
+ "id": "211112",
209
+ "type": "user"
210
+ },
211
+ "links": {
212
+ "related": "https://www.patreon.com/api/user/211112"
213
+ }
214
+ },
215
+ "patron": {
216
+ "data": {
217
+ "id": "32187",
218
+ "type": "user"
219
+ },
220
+ "links": {
221
+ "related": "https://www.patreon.com/api/user/32187"
222
+ }
223
+ },
224
+ "reward": {
225
+ "data": {
226
+ "id": "1070038",
227
+ "type": "reward"
228
+ },
229
+ "links": {
230
+ "related": "https://www.patreon.com/api/rewards/1070038"
231
+ }
232
+ }
233
+ },
234
+ "type": "pledge"
235
+ },
236
+ {
237
+ "attributes": {
238
+ "amount_cents": 100,
239
+ "created_at": "2017-05-31T21:35:43.151400+00:00",
240
+ "declined_since": null,
241
+ "patron_pays_fees": false,
242
+ "pledge_cap_cents": null
243
+ },
244
+ "id": "6110391",
245
+ "relationships": {
246
+ "address": {
247
+ "data": null
248
+ },
249
+ "card": {
250
+ "data": {
251
+ "id": "cus_Bm8GhyqVtpWOfj",
252
+ "type": "card"
253
+ },
254
+ "links": {
255
+ "related": "https://www.patreon.com/api/cards/cus_Bm8GhyqVtpWOfj"
256
+ }
257
+ },
258
+ "creator": {
259
+ "data": {
260
+ "id": "2384716",
261
+ "type": "user"
262
+ },
263
+ "links": {
264
+ "related": "https://www.patreon.com/api/user/2384716"
265
+ }
266
+ },
267
+ "patron": {
268
+ "data": {
269
+ "id": "32187",
270
+ "type": "user"
271
+ },
272
+ "links": {
273
+ "related": "https://www.patreon.com/api/user/32187"
274
+ }
275
+ },
276
+ "reward": {
277
+ "data": null
278
+ }
279
+ },
280
+ "type": "pledge"
281
+ },
282
+ {
283
+ "attributes": {
284
+ "amount_cents": 100,
285
+ "created_at": "2018-01-25T22:45:00.483982+00:00",
286
+ "declined_since": null,
287
+ "patron_pays_fees": false,
288
+ "pledge_cap_cents": 100
289
+ },
290
+ "id": "10563089",
291
+ "relationships": {
292
+ "address": {
293
+ "data": null
294
+ },
295
+ "card": {
296
+ "data": {
297
+ "id": "cus_Bm8GhyqVtpWOfj",
298
+ "type": "card"
299
+ },
300
+ "links": {
301
+ "related": "https://www.patreon.com/api/cards/cus_Bm8GhyqVtpWOfj"
302
+ }
303
+ },
304
+ "creator": {
305
+ "data": {
306
+ "id": "4766302",
307
+ "type": "user"
308
+ },
309
+ "links": {
310
+ "related": "https://www.patreon.com/api/user/4766302"
311
+ }
312
+ },
313
+ "patron": {
314
+ "data": {
315
+ "id": "32187",
316
+ "type": "user"
317
+ },
318
+ "links": {
319
+ "related": "https://www.patreon.com/api/user/32187"
320
+ }
321
+ },
322
+ "reward": {
323
+ "data": {
324
+ "id": "2044993",
325
+ "type": "reward"
326
+ },
327
+ "links": {
328
+ "related": "https://www.patreon.com/api/rewards/2044993"
329
+ }
330
+ }
331
+ },
332
+ "type": "pledge"
333
+ },
334
+ {
335
+ "attributes": {
336
+ "card_type": "Card",
337
+ "created_at": "2017-11-15T23:09:03+00:00",
338
+ "expiration_date": "2019-01-01T00:00:00+00:00",
339
+ "has_a_failed_payment": false,
340
+ "is_verified": true,
341
+ "number": "3342",
342
+ "payment_token": "cus_Bm8GhyqVtpWOfj",
343
+ "payment_token_id": 7040485
344
+ },
345
+ "id": "cus_Bm8GhyqVtpWOfj",
346
+ "relationships": {
347
+ "user": {
348
+ "data": {
349
+ "id": "32187",
350
+ "type": "user"
351
+ },
352
+ "links": {
353
+ "related": "https://www.patreon.com/api/user/32187"
354
+ }
355
+ }
356
+ },
357
+ "type": "card"
358
+ },
359
+ {
360
+ "attributes": {
361
+ "about": "i'm a songwriter, performer, book-writer, blog-blogger, love-lover, rule-hater, and maker of Things, connector of dots. i believe in online music being as free as possible, unlocked, shared and spread. i believe that in order for artists to survive and create, their audiences need to step up and directly support them. \u2028honor system.\u2028 no judgment. if you'd like to support me, this is a great place to do it. my first book, \u201cTHE ART OF ASKING\u201d is OUT NOW on paperback: www.amandapalmer.net<br>",
362
+ "created": "2013-06-19T17:16:49+00:00",
363
+ "facebook": "https://www.facebook.com/amandapalmer",
364
+ "first_name": "Amanda",
365
+ "full_name": "Amanda Palmer",
366
+ "gender": 0,
367
+ "image_url": "https://c10.patreonusercontent.com/3/eyJwIjoxLCJ2IjoiMSJ9/patreon-media/user/36361/df5d1e7e2d9a45798d106220049a2da5?token-time=2145916800&token-hash=Y72nC-M7o03l9e4ulnmVNB7VPqqL88O-FHW8dlh97vs%3D",
368
+ "last_name": "Palmer",
369
+ "thumb_url": "https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInYiOiIxIiwidyI6MTAwfQ%3D%3D/patreon-media/user/36361/df5d1e7e2d9a45798d106220049a2da5?token-time=2145916800&token-hash=SX8tLtJscpXpKxsxXSBTyrB6DXKzskNw07bFfBIS37U%3D",
370
+ "twitch": null,
371
+ "twitter": "amandapalmer",
372
+ "url": "https://www.patreon.com/amandapalmer",
373
+ "vanity": "amandapalmer",
374
+ "youtube": "https://www.youtube.com/amandapalmer"
375
+ },
376
+ "id": "36361",
377
+ "relationships": {
378
+ "campaign": {
379
+ "data": {
380
+ "id": "71481",
381
+ "type": "campaign"
382
+ },
383
+ "links": {
384
+ "related": "https://www.patreon.com/api/campaigns/71481"
385
+ }
386
+ }
387
+ },
388
+ "type": "user"
389
+ },
390
+ {
391
+ "attributes": {
392
+ "amount": 100,
393
+ "amount_cents": 100,
394
+ "created_at": "2016-12-20T18:56:07.931309+00:00",
395
+ "description": "sd<br>\n",
396
+ "discord_role_ids": null,
397
+ "edited_at": "2016-12-20T18:56:29.211592+00:00",
398
+ "image_url": null,
399
+ "patron_count": 1,
400
+ "post_count": null,
401
+ "published": true,
402
+ "published_at": "2016-12-20T18:56:07.931309+00:00",
403
+ "remaining": null,
404
+ "requires_shipping": false,
405
+ "title": "dssd",
406
+ "unpublished_at": null,
407
+ "url": "/bePatron?c=499077&rid=1188921",
408
+ "user_limit": null
409
+ },
410
+ "id": "1188921",
411
+ "relationships": {
412
+ "campaign": {
413
+ "data": {
414
+ "id": "499077",
415
+ "type": "campaign"
416
+ },
417
+ "links": {
418
+ "related": "https://www.patreon.com/api/campaigns/499077"
419
+ }
420
+ }
421
+ },
422
+ "type": "reward"
423
+ },
424
+ {
425
+ "attributes": {
426
+ "about": "",
427
+ "created": "2016-02-25T04:48:55+00:00",
428
+ "facebook": null,
429
+ "first_name": "dogfoodz",
430
+ "full_name": "dogfoodz",
431
+ "gender": 0,
432
+ "image_url": "https://c8.patreon.com/2/400/2934426",
433
+ "last_name": "",
434
+ "thumb_url": "https://c8.patreon.com/2/100/2934426",
435
+ "twitch": null,
436
+ "twitter": null,
437
+ "url": "https://www.patreon.com/zhyliana",
438
+ "vanity": "zhyliana",
439
+ "youtube": null
440
+ },
441
+ "id": "2934426",
442
+ "relationships": {
443
+ "campaign": {
444
+ "data": {
445
+ "id": "499077",
446
+ "type": "campaign"
447
+ },
448
+ "links": {
449
+ "related": "https://www.patreon.com/api/campaigns/499077"
450
+ }
451
+ }
452
+ },
453
+ "type": "user"
454
+ },
455
+ {
456
+ "attributes": {
457
+ "amount": 500,
458
+ "amount_cents": 500,
459
+ "created_at": "2016-11-20T21:30:01+00:00",
460
+ "description": "<ul><li>High-quality downloads (.jpg, .mp3)</li><li>Process/behind-the-scenes</li><li>Plus all previous rewards</li></ul>",
461
+ "discord_role_ids": null,
462
+ "edited_at": "2017-01-25T19:58:24.953356+00:00",
463
+ "image_url": null,
464
+ "post_count": 1,
465
+ "published": true,
466
+ "published_at": "2016-11-20T21:30:01+00:00",
467
+ "remaining": null,
468
+ "requires_shipping": true,
469
+ "title": "awesome reward name",
470
+ "unpublished_at": null,
471
+ "url": "/bePatron?c=99664&rid=1070038"
472
+ },
473
+ "id": "1070038",
474
+ "relationships": {
475
+ "campaign": {
476
+ "data": {
477
+ "id": "99664",
478
+ "type": "campaign"
479
+ },
480
+ "links": {
481
+ "related": "https://www.patreon.com/api/campaigns/99664"
482
+ }
483
+ }
484
+ },
485
+ "type": "reward"
486
+ },
487
+ {
488
+ "attributes": {
489
+ "addressee": "Corgi Pager",
490
+ "city": "San Francisco",
491
+ "country": "US",
492
+ "line_1": "230 9th street ",
493
+ "line_2": null,
494
+ "postal_code": "94103",
495
+ "state": "CA"
496
+ },
497
+ "id": "481681",
498
+ "type": "address"
499
+ },
500
+ {
501
+ "attributes": {
502
+ "about": "Had mediterranean for lunch",
503
+ "created": "2014-06-29T03:44:13+00:00",
504
+ "facebook": "",
505
+ "first_name": "Dave",
506
+ "full_name": "Dave Hunt",
507
+ "gender": 0,
508
+ "image_url": "https://c10.patreonusercontent.com/3/eyJwIjoxLCJ2IjoiMSJ9/patreon-media/user/211112/8cd4e67b324b44ff8187a9c9c13e1340?token-time=2145916800&token-hash=gIV4pt9xtkRr8pyyn4JU89pOZeFiUg0JSQk8G4EOXM4%3D",
509
+ "last_name": "Hunt",
510
+ "thumb_url": "https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInYiOiIxIiwidyI6MTAwfQ%3D%3D/patreon-media/user/211112/8cd4e67b324b44ff8187a9c9c13e1340?token-time=2145916800&token-hash=bFAPV-_MesCHQhZ5YIX695CXhH4hoGHXSsp57e4_M4Y%3D",
511
+ "twitch": "",
512
+ "twitter": "hentaiwriter",
513
+ "url": "https://www.patreon.com/davehunt",
514
+ "vanity": "davehunt",
515
+ "youtube": ""
516
+ },
517
+ "id": "211112",
518
+ "relationships": {
519
+ "campaign": {
520
+ "data": {
521
+ "id": "99664",
522
+ "type": "campaign"
523
+ },
524
+ "links": {
525
+ "related": "https://www.patreon.com/api/campaigns/99664"
526
+ }
527
+ }
528
+ },
529
+ "type": "user"
530
+ },
531
+ {
532
+ "attributes": {
533
+ "about": "",
534
+ "created": "2015-09-28T21:39:14+00:00",
535
+ "facebook": null,
536
+ "first_name": "Alex",
537
+ "full_name": "Alex Trytko and Friends and Family",
538
+ "gender": 0,
539
+ "image_url": "https://c10.patreonusercontent.com/3/eyJwIjoxLCJ2IjoiMSJ9/patreon-media/user/2384716/0c463114f3d54aeab6e4ebe3ac551ea0?token-time=2145916800&token-hash=9La3lGF2IvfXDOrCeLHEpr53IOynVBWGaidOEx-uRek%3D",
540
+ "last_name": "Trytko and Friends and Family",
541
+ "thumb_url": "https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInYiOiIxIiwidyI6MTAwfQ%3D%3D/patreon-media/user/2384716/0c463114f3d54aeab6e4ebe3ac551ea0?token-time=2145916800&token-hash=a0UkFz2919rFIRAk8b9VFtOw5nGgxQyQh6pKjYO0Q5k%3D",
542
+ "twitch": null,
543
+ "twitter": "",
544
+ "url": "https://www.patreon.com/alextrytko",
545
+ "vanity": "alextrytko",
546
+ "youtube": null
547
+ },
548
+ "id": "2384716",
549
+ "relationships": {
550
+ "campaign": {
551
+ "data": {
552
+ "id": "761889",
553
+ "type": "campaign"
554
+ },
555
+ "links": {
556
+ "related": "https://www.patreon.com/api/campaigns/761889"
557
+ }
558
+ }
559
+ },
560
+ "type": "user"
561
+ },
562
+ {
563
+ "attributes": {
564
+ "amount": 100,
565
+ "amount_cents": 100,
566
+ "created_at": "2017-10-02T23:35:24.799740+00:00",
567
+ "description": "Wat wat",
568
+ "discord_role_ids": null,
569
+ "edited_at": "2017-10-03T00:02:56.754949+00:00",
570
+ "image_url": null,
571
+ "patron_count": 1,
572
+ "post_count": null,
573
+ "published": true,
574
+ "published_at": "2017-10-03T00:02:56.710754+00:00",
575
+ "remaining": 1,
576
+ "requires_shipping": false,
577
+ "title": "I ship u stuffz",
578
+ "unpublished_at": null,
579
+ "url": "/bePatron?c=682690&rid=2044993",
580
+ "user_limit": 2
581
+ },
582
+ "id": "2044993",
583
+ "relationships": {
584
+ "campaign": {
585
+ "data": {
586
+ "id": "682690",
587
+ "type": "campaign"
588
+ },
589
+ "links": {
590
+ "related": "https://www.patreon.com/api/campaigns/682690"
591
+ }
592
+ }
593
+ },
594
+ "type": "reward"
595
+ },
596
+ {
597
+ "attributes": {
598
+ "about": "",
599
+ "created": "2017-01-03T23:15:54+00:00",
600
+ "facebook": null,
601
+ "first_name": "eboyle",
602
+ "full_name": "eboyle",
603
+ "gender": 0,
604
+ "image_url": "https://c10.patreonusercontent.com/3/eyJwIjoxLCJ2IjoiMSJ9/patreon-media/user/4766302/b403f4d43f9b408382893520b9971ed5?token-time=2145916800&token-hash=5TXNj5VyBR7-Y8LBt1qBb2U83RA1yN3ma2J3YufluPs%3D",
605
+ "last_name": "",
606
+ "thumb_url": "https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInYiOiIxIiwidyI6MTAwfQ%3D%3D/patreon-media/user/4766302/b403f4d43f9b408382893520b9971ed5?token-time=2145916800&token-hash=ptRftR_tkPitpi7qSL9xaNpuoa-_oHC0moa2gLW3IDU%3D",
607
+ "twitch": null,
608
+ "twitter": null,
609
+ "url": "https://www.patreon.com/eboyle",
610
+ "vanity": "eboyle",
611
+ "youtube": null
612
+ },
613
+ "id": "4766302",
614
+ "relationships": {
615
+ "campaign": {
616
+ "data": {
617
+ "id": "682690",
618
+ "type": "campaign"
619
+ },
620
+ "links": {
621
+ "related": "https://www.patreon.com/api/campaigns/682690"
622
+ }
623
+ }
624
+ },
625
+ "type": "user"
626
+ },
627
+ {
628
+ "attributes": {
629
+ "created_at": "2013-06-19T17:16:49+00:00",
630
+ "creation_count": 501,
631
+ "creation_name": "Art",
632
+ "discord_server_id": null,
633
+ "display_patron_goals": false,
634
+ "earnings_visibility": "public",
635
+ "image_small_url": "https://c10.patreonusercontent.com/3/eyJoIjoxMjgwLCJ3IjoxMjgwfQ%3D%3D/patreon-user/XGuGB7jt9FYqoPe9MT7ybJzcR8PeXMMHMRYMP5WQfSFb2DEa0o9O7EZvDoXMTYT9_large_2.png?token-time=2145916800&token-hash=4ulsfE3alw5cN67GDxo-9GpeirOI0Ls8zEtSXWUIVLY%3D",
636
+ "image_url": "https://c10.patreonusercontent.com/3/eyJ3IjoxOTIwfQ%3D%3D/patreon-user/XGuGB7jt9FYqoPe9MT7ybJzcR8PeXMMHMRYMP5WQfSFb2DEa0o9O7EZvDoXMTYT9_large_2.png?token-time=2145916800&token-hash=CeHMo0XCJxgXGsDVi3YvIGrumyq4T6AiF5I7KGCDV7o%3D",
637
+ "is_charged_immediately": false,
638
+ "is_monthly": false,
639
+ "is_nsfw": false,
640
+ "is_plural": false,
641
+ "main_video_embed": "<iframe allowfullscreen=\"\" frameborder=\"0\" height=\"480\" scrolling=\"no\" src=\"//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FPKiTTCNHdjk%3Ffeature%3Doembed&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DPKiTTCNHdjk&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FPKiTTCNHdjk%2Fhqdefault.jpg&amp;key=8ee8a2e6a8cc47aab1a5ee67f9a178e0&amp;type=text%2Fhtml&amp;schema=youtube\" width=\"854\"></iframe>",
642
+ "main_video_url": "https://www.youtube.com/watch?v=PKiTTCNHdjk",
643
+ "one_liner": "I am Amanda Fucking Palmer. ",
644
+ "outstanding_payment_amount_cents": 100,
645
+ "patron_count": 10821,
646
+ "pay_per_name": "thing",
647
+ "pledge_sum": 3713019,
648
+ "pledge_url": "/bePatron?c=71481",
649
+ "published_at": "2015-03-03T16:15:06+00:00",
650
+ "summary": "HOLA COMRADES!<br><br>\n\nwell, here we are. the next frontier.\u00a0here i am again, asking.<br><br>it's now been over TWO YEARS (!) since i launched this patreon page and there's over 11,000 people here, supporting my weirdness, and i am perpetually in awe. and really grateful.<br><br>and now that we've kind of gotten the hang of this patreon thing, i can explain some things to all y'all that weren't so clear when we were starting out!<br><br>the video above is now a bit outdated, but it is a kind of nice before n' after, considering i had a mission and now i'm a year in....here's what i've released as paid \"Things\" so far!<br><a href=\"http://amandapalmer.net/patreon-things/\" rel=\"nofollow\">http://amandapalmer.net/patreon-things/</a><br><br>so what's patreon?\u00a0if you're just showing up here for the first time....here's the lowdown:<br><br>\n\nif you're a fan of mine and want to support me in the creation of new songs/webcasts/videos/writing/performance-art and more random, unpredictable art-things, this is the place. as you can see, the list above is pretty varied...and who knows what's next...comics? podcasts? i'm wide open. i like surprises.\u00a0 <a href=\"http://amandapalmer.tumblr.com/post/126884237426/a-round-up-of-all-my-official-patreon-content-to\" rel=\"nofollow\"><br><br></a>the feedback from the patrons gathered here has been GREAT. it's working. i read comments, we discuss, i love feedback, i am figuring this system out AS I GO, with the help of the people here.\u00a0<br><br>my backstory:<br><br>\n\ni've been struggling since i got off my label in 2008 to find the right platform for ongoing support, through which i can release constant material (and get paid).<br><br>\n\ni've gotten to know myself. as a creator, as a songwriter, and as a recording artist, i thrive on instant gratification and a direct mainline to my audience without having to go through labels, distributors, the machine, the mass media. i love making things and instantly sharing. and i know my fanbase: you're smart, kind, supportive, future-platform embracing people. <br><br>we all started learning how to trust each other with kickstarter, pledgemusic, indiegogo. i think subscription sites like patreon are a new revolution in music-release and art patronage.<br><br>what i'm doing flies in the face of most conventional approaches: i try to release pretty much ALL MY ARTISTIC CONTENT for free: the songs and videos live FREE on youtube, bandcamp, my site, wherever. <br>(in some cases, like david bowie covers, i have to charge, because bowie's publisher charges me for the use of the songs. but usually, stuff's free).<br><br>THAT IS HOW I LIKE IT. not everybody wants to buy it. that's fine. it's yours, it's everybody's, you can take it, you can share it.<br><br>\n\nbut to DO this: i need support, true patronage. those willing to be the driving engine to pay for the recording studios, the filmmakers, the office rent, the staff costs, the gas, the food, the lodging. i need a salary and a budget.\u00a0<br><br>\n\ni'm friends with jack (the CEO) and the fine folks at patreon, as i was pals (and still am) with yancey over at kickstarter. i *really* believe in the future of crowd-power and what these people and companies are doing.\u00a0it isn't making world news, because it is what it is: a quiet, underground network of artists connecting directly with their fans, bypassing the entire commercial system. this is AWESOME. <br><br>it is, in these days of negativity and tumblr outrage, the bright side of the net: it is how the web can really *save artists* in an art-economy that is floundering. AND it means YOU need to step up and support the artists you love, the political cartoonists you want to see bravely satirizing the system, the painters you want to see reflecting their realities, the musicians you want filling your hearts and your speakers, the journalists you want to see writing about the state of the world. <br><br>THIS IS HAPPENING!!!! HERE YOU ARE!!!!<br><br>\n\nalmost 25,000 of you supported my kickstarter, and i don't expect those kinds of numbers here - this is more of a commitment: though you do get to road test it if you're scared (you can pull out before you're charged at the end of any month, so it's risk-free).<br><br>\n\nmy kickstarter was a one-time deal, this is more of an ongoing commitment to me and my music and spontaneous art-making. <br><br>kickstarter was like a serious date, this is like getting married.\u00a0<br><br>\n\nmore backstory? i've been flailing (often happily, for sure) since i left my label in 2008. self-releasing and distributing vinyl &amp; CDs isn't easy. giving my music away for free online has been an adventure, but not as sustainable as i expected. you may be surprised to know that \"theatre is evil\" - even with 25,000 backers and rave reviews in the press - sold relatively few copies in stores.\u00a0<br><br>but while kickstarter is awesome for huge one-time projects, i don't want to do get repetitive and exhaust the fanbase with \"HEY I'M MAKING YET ANOTHER RECORD, PRE-ORDER HERE....AGAIN!.\"<br><br>i just want to be able to go into the studio, make music with friends, call a film director, make a video, take a few months off, write, record, and press PUBLISH when i'm done, the way i can with my blogs. bam, bam, bam. INSTANT ART.<br><br>\n\ni also don't want to have to think up clever merchandise (i know we love fuzzy posters, and t-shirts, mugs and tea-cozies....but how much Stuff is too much Stuff before we don't need any more Stuff cluttering up landfills?)<br><br>\n\ndon't get me wrong: i'm not going to give up on physical or merchandise (i mean, manufacturing my own vinyl and nudie pens brings me great joy) and i'm not going to give up on collecting my music into \"albums\".<br><br>but i know me and i'm addicted to PUTTING OUT THE THING NOW. i've seen what's happened to me when i'm able to slave all night on something and wave it around immediately the next day online or at a show. without that possibility, 8in8 (the all-night record i made with ben folds and damian kulash and neil gaiman: <a href=\"http://www.eightineight.com/band.html\" rel=\"nofollow\" target=\"_blank\">http://www.eightineight.com/band.html</a>) wouldn't have happened. and i don't think i ever would have written \"gaga, palmer, madonna\" (<a href=\"https://www.youtube.com/watch?v=9dxDREaCyjE\" rel=\"nofollow\">https://www.youtube.com/watch?v=9dxDREaCyjE</a>) if i hadn't been able to upload it directly to YouTube that night. the immediate thrills me. getting PAID to make this art instead of just doing it for kicks thrills me even more.<br><br>about money:<br><br>SOME THINGS COST A LOT OF MONEY! some of the patreon projects listed above had budgets of $15,000. and\u00a0SOME THINGS COST ALMOST NOTHING! a song like \"a mother's confession\" cost me a few thousand dollars (to pay my kind engineer for his studio and mixing time).<br><br>the idea here is that you trust me to use the ongoing budgets as i see fit. not every project will cost the same...but the more budget i have, the more fun crazy shit i can do, the more staff i can pay (and the better i can pay the staff i already have), and more i can spend on my artistic collaborators. i like feeling like a pipeline through which money can flow. it gives me great pleasure to be able to pay other artists to Do Their Things with my budgets.<br>\u00a0<br>here's the key: THIS IS A HUGE EXPERIMENT. <br><br>\n\nif you guys know me, you know i LISTEN. we're here to make this sucker work together, and we will. <br>\neven if you're a one dollar backer, i want to know what you're digging about the platform and what's bugging you. the conversation (via comments here, and on twitter and facebook, and on the live webcasts) has already been ON FIRE, and i hope to keep it that way.<br><br>every patron who's supporting me is important to this community, YOU'RE who i'm creating for, and i'm glad you found me here.<br><br>whether you're backing me for a dollar or ten dollars...THANK YOU.<br><br>ALLL THE THIIIIIIIIIIINGS!!!<br>MOAR THINGS FOREVER!!!!!!<br>let's DO THIS SHIT!!!!!!!!!!!!!!!<br><br>love,<br>\nAFP<br><br>p.s. if you're just finding out about patreon and you're like JA JA JA JA OMG, here are a few other artists/creators i suggest you look into....<br><br>neil degrasse tyson (making a startalk podcast!)\u00a0<a href=\"https://www.patreon.com/startalkradio?ty=c\" rel=\"nofollow\">https://www.patreon.com/startalkradio</a><br>geeta dayal (writing smart journalism about music and art!) <a href=\"https://www.patreon.com/geetadayal\" rel=\"nofollow\" target=\"_blank\">https://www.patreon.com/geetadayal</a><br>martin gommel (photo essays about refugees in europe!)\u00a0<a href=\"https://www.patreon.com/martingommel\" rel=\"nofollow\" target=\"_blank\">https://www.patreon.com/martingommel</a> <br><br><br>p.p.s. if you're not familiar with MY music, i've made a great primer page to acquaint you, it's called \"a walk through amandalanda\" and has streams of my biggest records and best videos:<br><br><a href=\"http://amandalanda.amandapalmer.net/\" rel=\"nofollow\" target=\"_blank\">http://amandalanda.amandapalmer.net/</a><br>\n............<br><br>THE FAQ (frequently asked questions)<br>\n\nif you have questions, please submit them on twitter, on facebook, on my blog, or here on the patron stream once you sign up.<br><br>Q: \"i have a question about your patreon, who can i contact?\"<br><br>A: reach out to patronhelp@amandapalmer.net and they will get you sorted!<br><br>Q: \"why are you charging Per Thing versus charging Per Month, like some other patreon artists?\"<br><br>A: i thought hard about charging Per Month instead of Per Thing, because patreon lets you do either, and a lot of artists are successfully charging per month. however, that makes me nervous: what if i'm traveling and touring and/or taking off time for three months in a row and don't have output to share? i'd feel guilty. i know me well enough to know that i don't work consistently: this isn't a weekly web comic, i'm a sporadic weirdo. Per Thing seemed safer. here's the way I figured it: patreon has a MONTHLY CAP, so if you want the security of only EVER paying $10 a month, because that's what your budget allows, you can CAP at $10. that way it's like paying $10 per month, WITH the added advantage that if i decide to post No Things\u00a0in a given month, you'll be charged NOTHING. so it's technically better for you, and i won't feel guilty, ever.<br><br>\n\nQ: \"but if i cap my backing at $10 a month, does that mean I won't get ALL THE THINGS? i want ALL THE THINGS!!!!!\"<br><br>\n\nA: lucky for you, i'm treating everybody equally. and also don't forget...almost nothing here is paywalled. the CONTENT goes out to the public, you guys are the backstage. you don't lose access to ANYTHING when you hit your cap. you'll still get EVERYTHING emailed to you if you're backing at the email level, and access to all streams even if your cap is $1 a month. you don't get punished for capping. <br><br>Q: \"does patreon accept paypal?\"<br><br>A: yes, paypal is accepted!<br><br>Q: \" I want to join your Patreon, but I don't have any idea how much to donate. I want to do it for about $25-35/month. You say it's donating \"per thing\" - how often do you do those \"things\" - so I can get an idea how much to donate per thing.\u00a0For example, if you do a \"thing\" every 3 months, I will donate $100 per thing.\u00a0guidelines on \"thing\" timetables... at least roughly?\" (from samaire provost on facebook)<br><br>A: well...that's really generous. the $100/month option is full right now, and i'm trying to figure out what to do about that. right now you have two options: you could just back me at $10/thing, which is the closest denomination (in general i put out about one thing a month and haven't put out 2 or 3 yet... but might!) and i'd cap your donation at $30, or $60, or $60....so you never pay more than you're happy with. OR if you're feeling more generous, you can actually \"write in\" a higher amount per thing (i.e. you can write in $20/$30/$50 at the $10 level) and that extra dough per thing, until you hit your monthly cap, is just considered generous gravy.<br>\n<br>Q: \"when are you going to put out an Actual Record I Can Touch? call me old school, but i just want to buy a simple record.\" <br><br>A: SOON! i'm workin on it. meanwhile, you can purchase one of the gazillions of physical records &amp; CDs I've released if you're super keen on touching things:<br><a href=\"http://shop.amandapalmer.net/\" rel=\"nofollow\">http://shop.amandapalmer.net/</a><br><br>Q: \"um....what if i want to just donate money to you once? this is weird.\"<br><br>A: um. that's fine. you can make a one-time donation to my site's music page here...down to the right where it says \"support my art\". thanks. (<a href=\"http://amandapalmer.net/music/\" rel=\"nofollow\" target=\"_blank\">http://amandapalmer.net/music/</a>)<br><br>Q: \"i love you. i just wanted to say that.\"<br><br>A: \"i love you too. here's a hug ((((((((((())))))))))))\"<br><br><br><br>",
651
+ "thanks_embed": "",
652
+ "thanks_msg": "HELLO MY DEARS. whether you're in for $1 or $10, THANK YOU SO MUCH for supporting me on patreon....you cannot know how much i appreciate your help here. it's an awesome system.<br><br>i post to the patreon page quite a bit (it's basically replaced my blog) and you'll be getting those posts AS emails, but make sure to click through if you want to see the live comments and comment yourself (which is always nice, and i do read 99% of them). <br>THIS IS IMPORTANT, now that you're a patron, you can CATCH UP! there's a lot you've missed, and you can now access the entire back-log of things: we built a page for exactly this reason and you can see *everything i've released as paid things right <a href=\"http://amandapalmer.net/patreon-things/\">here</a>.<br><br>if you have any PROBLEMS with your patreon account (not getting charged? getting charged too much? questions about the monthly cap? CONFUSED IN GENERAL?) you can email hayley at patronhelp@amandapalmer.net, she's here to answer any and all patreon-related questions.\u00a0<a href=\"https://www.facebook.com/groups/414049798762802/\"><br><br></a>and AS ALWAYS...you should join the golden email list to get the world-wide newsletter i send out every so often. i've had it for fifteen years and its the backbone of All Things:\u00a0<a href=\"http://amandapalmer.net/emaillist/\">http://amandapalmer.net/emaillist/</a>. sometimes it repeats a little of what is in the patreon feed, but not too much.\u00a0<br><br>OKAY...and now. TO ALL THE THINGS.<br><br>i love you,<br>amanda<br><br><br>p.s. if you're *very* new to my music/content, i made this special page of some of my best content/songs/videos, from the dresden dolls til now: it's called \"a walk through amandalanda\". it's a great place to start.<br><a href=\"http://amandalanda.amandapalmer.net/\">http://amandalanda.amandapalmer.net/</a><br><br><br><br><br>",
653
+ "thanks_video_url": null
654
+ },
655
+ "id": "71481",
656
+ "relationships": {
657
+ "creator": {
658
+ "data": {
659
+ "id": "36361",
660
+ "type": "user"
661
+ },
662
+ "links": {
663
+ "related": "https://www.patreon.com/api/user/36361"
664
+ }
665
+ },
666
+ "goals": {
667
+ "data": []
668
+ },
669
+ "rewards": {
670
+ "data": [
671
+ {
672
+ "id": "-1",
673
+ "type": "reward"
674
+ },
675
+ {
676
+ "id": "0",
677
+ "type": "reward"
678
+ },
679
+ {
680
+ "id": "103698",
681
+ "type": "reward"
682
+ },
683
+ {
684
+ "id": "103699",
685
+ "type": "reward"
686
+ },
687
+ {
688
+ "id": "103700",
689
+ "type": "reward"
690
+ },
691
+ {
692
+ "id": "169837",
693
+ "type": "reward"
694
+ },
695
+ {
696
+ "id": "169838",
697
+ "type": "reward"
698
+ },
699
+ {
700
+ "id": "170781",
701
+ "type": "reward"
702
+ }
703
+ ]
704
+ }
705
+ },
706
+ "type": "campaign"
707
+ },
708
+ {
709
+ "attributes": {
710
+ "created_at": "2016-09-08T18:24:19+00:00",
711
+ "creation_count": 5,
712
+ "creation_name": "thingys",
713
+ "discord_server_id": null,
714
+ "display_patron_goals": false,
715
+ "earnings_visibility": "public",
716
+ "image_small_url": null,
717
+ "image_url": null,
718
+ "is_charged_immediately": false,
719
+ "is_monthly": false,
720
+ "is_nsfw": false,
721
+ "is_plural": false,
722
+ "main_video_embed": null,
723
+ "main_video_url": null,
724
+ "one_liner": null,
725
+ "outstanding_payment_amount_cents": 0,
726
+ "patron_count": 1,
727
+ "pay_per_name": "thing",
728
+ "pledge_sum": 180,
729
+ "pledge_url": "/bePatron?c=499077",
730
+ "published_at": "2016-09-08T18:24:48+00:00",
731
+ "summary": "",
732
+ "thanks_embed": "",
733
+ "thanks_msg": null,
734
+ "thanks_video_url": null
735
+ },
736
+ "id": "499077",
737
+ "relationships": {
738
+ "creator": {
739
+ "data": {
740
+ "id": "2934426",
741
+ "type": "user"
742
+ },
743
+ "links": {
744
+ "related": "https://www.patreon.com/api/user/2934426"
745
+ }
746
+ },
747
+ "goals": {
748
+ "data": []
749
+ },
750
+ "rewards": {
751
+ "data": [
752
+ {
753
+ "id": "-1",
754
+ "type": "reward"
755
+ },
756
+ {
757
+ "id": "0",
758
+ "type": "reward"
759
+ },
760
+ {
761
+ "id": "1188921",
762
+ "type": "reward"
763
+ }
764
+ ]
765
+ }
766
+ },
767
+ "type": "campaign"
768
+ },
769
+ {
770
+ "attributes": {
771
+ "created_at": "2014-06-29T03:44:13+00:00",
772
+ "creation_count": 12,
773
+ "creation_name": "Music",
774
+ "discord_server_id": null,
775
+ "display_patron_goals": false,
776
+ "earnings_visibility": "private",
777
+ "image_small_url": "https://c10.patreonusercontent.com/3/eyJoIjoxMjgwLCJ3IjoxMjgwfQ%3D%3D/patreon/fed65b47d8d1928ab3f0db58c0f1a96c.jpg?token-time=2145916800&token-hash=5CA-iYLLtQM4Rec9Z9D3ZGU0vXTHuSbxZRus7Eadla0%3D",
778
+ "image_url": "https://c10.patreonusercontent.com/3/eyJ3IjoxOTIwfQ%3D%3D/patreon/fed65b47d8d1928ab3f0db58c0f1a96c.jpg?token-time=2145916800&token-hash=Kn7PbI2Wabu53sL0gruD0kFPrIt9TAE6tup7qO5-g6g%3D",
779
+ "is_charged_immediately": false,
780
+ "is_monthly": false,
781
+ "is_nsfw": false,
782
+ "is_plural": false,
783
+ "main_video_embed": "",
784
+ "main_video_url": "",
785
+ "one_liner": "Teaching the world about posts ",
786
+ "outstanding_payment_amount_cents": 0,
787
+ "patron_count": 2,
788
+ "pay_per_name": "creation",
789
+ "pledge_url": "/bePatron?c=99664",
790
+ "published_at": "2016-11-30T20:35:56+00:00",
791
+ "summary": "Please support me on Pateron!\u00a0",
792
+ "thanks_embed": "",
793
+ "thanks_msg": "Thanks!\u00a0",
794
+ "thanks_video_url": null
795
+ },
796
+ "id": "99664",
797
+ "relationships": {
798
+ "creator": {
799
+ "data": {
800
+ "id": "211112",
801
+ "type": "user"
802
+ },
803
+ "links": {
804
+ "related": "https://www.patreon.com/api/user/211112"
805
+ }
806
+ },
807
+ "goals": {
808
+ "data": [
809
+ {
810
+ "id": "432329",
811
+ "type": "goal"
812
+ }
813
+ ]
814
+ },
815
+ "rewards": {
816
+ "data": [
817
+ {
818
+ "id": "-1",
819
+ "type": "reward"
820
+ },
821
+ {
822
+ "id": "0",
823
+ "type": "reward"
824
+ },
825
+ {
826
+ "id": "549201",
827
+ "type": "reward"
828
+ },
829
+ {
830
+ "id": "1070038",
831
+ "type": "reward"
832
+ },
833
+ {
834
+ "id": "1130550",
835
+ "type": "reward"
836
+ }
837
+ ]
838
+ }
839
+ },
840
+ "type": "campaign"
841
+ },
842
+ {
843
+ "attributes": {
844
+ "created_at": "2017-02-22T01:50:36+00:00",
845
+ "creation_count": 25,
846
+ "creation_name": "music",
847
+ "discord_server_id": null,
848
+ "display_patron_goals": false,
849
+ "earnings_visibility": "public",
850
+ "image_small_url": "https://c10.patreonusercontent.com/3/eyJoIjoxMjgwLCJ3IjoxMjgwfQ%3D%3D/patreon-user/Vbk98qyF95ROh4ykqFuBlABF7s6vLfwDf6agIna6oAHicSMaMjfF1_lwF9yveQek.jpeg?token-time=2145916800&token-hash=J9LOKHRv7dFKXd6h93n95m1WK2vtPXYBd4ZgyTFvYXE%3D",
851
+ "image_url": "https://c10.patreonusercontent.com/3/eyJ3IjoxOTIwfQ%3D%3D/patreon-user/Vbk98qyF95ROh4ykqFuBlABF7s6vLfwDf6agIna6oAHicSMaMjfF1_lwF9yveQek.jpeg?token-time=2145916800&token-hash=-eywGBoTkWQWOJFy7-VfXMamGy0RkaOEisVUPlCkcTk%3D",
852
+ "is_charged_immediately": false,
853
+ "is_monthly": false,
854
+ "is_nsfw": false,
855
+ "is_plural": false,
856
+ "main_video_embed": null,
857
+ "main_video_url": null,
858
+ "one_liner": null,
859
+ "outstanding_payment_amount_cents": 0,
860
+ "patron_count": 8,
861
+ "pay_per_name": null,
862
+ "pledge_sum": 720,
863
+ "pledge_url": "/bePatron?c=761889",
864
+ "published_at": "2017-02-22T01:51:12+00:00",
865
+ "summary": "this is a test<br><br>https://developer.android.com/reference/android/text/Html.html",
866
+ "thanks_embed": null,
867
+ "thanks_msg": null,
868
+ "thanks_video_url": null
869
+ },
870
+ "id": "761889",
871
+ "relationships": {
872
+ "creator": {
873
+ "data": {
874
+ "id": "2384716",
875
+ "type": "user"
876
+ },
877
+ "links": {
878
+ "related": "https://www.patreon.com/api/user/2384716"
879
+ }
880
+ },
881
+ "goals": {
882
+ "data": []
883
+ },
884
+ "rewards": {
885
+ "data": [
886
+ {
887
+ "id": "-1",
888
+ "type": "reward"
889
+ },
890
+ {
891
+ "id": "0",
892
+ "type": "reward"
893
+ }
894
+ ]
895
+ }
896
+ },
897
+ "type": "campaign"
898
+ },
899
+ {
900
+ "attributes": {
901
+ "created_at": "2017-01-04T18:26:34+00:00",
902
+ "creation_count": 7,
903
+ "creation_name": "lists of podcasts",
904
+ "discord_server_id": null,
905
+ "display_patron_goals": true,
906
+ "earnings_visibility": "public",
907
+ "image_small_url": "https://c10.patreonusercontent.com/3/eyJoIjoxMjgwLCJ3IjoxMjgwfQ%3D%3D/patreon-user/3sd9IoCpFqLMrFE8gMH5YKhmSXYJUtsNzWHQwVOIzUmCLN73lszMitQud2blV86M_large_2.png?token-time=2145916800&token-hash=pWugSPmBcB0sjCPIIJGqF31wl26L-BL7K3ZO-d4OZdU%3D",
908
+ "image_url": "https://c10.patreonusercontent.com/3/eyJ3IjoxOTIwfQ%3D%3D/patreon-user/3sd9IoCpFqLMrFE8gMH5YKhmSXYJUtsNzWHQwVOIzUmCLN73lszMitQud2blV86M_large_2.png?token-time=2145916800&token-hash=IYul8xn1FyDuZiA1j-4hyr6DJAD6gfxoJSiAz8n_8tQ%3D",
909
+ "is_charged_immediately": true,
910
+ "is_monthly": true,
911
+ "is_nsfw": false,
912
+ "is_plural": false,
913
+ "main_video_embed": null,
914
+ "main_video_url": null,
915
+ "one_liner": null,
916
+ "outstanding_payment_amount_cents": 0,
917
+ "patron_count": 3,
918
+ "pay_per_name": "month",
919
+ "pledge_sum": 665,
920
+ "pledge_url": "/bePatron?c=682690",
921
+ "published_at": "2017-01-04T18:31:56+00:00",
922
+ "summary": "I love podcasts. Presumably so do you! I'm going to curate lists of podcasts for you on a regular basis. Sweet.",
923
+ "thanks_embed": null,
924
+ "thanks_msg": "Thanks so much for supporting my idea! If you really love podcasts and you want to help even more, consider filling out this short survey:\u00a0https://goo.gl/forms/3XAVvqF5pm9hMY2Z2",
925
+ "thanks_video_url": null
926
+ },
927
+ "id": "682690",
928
+ "relationships": {
929
+ "creator": {
930
+ "data": {
931
+ "id": "4766302",
932
+ "type": "user"
933
+ },
934
+ "links": {
935
+ "related": "https://www.patreon.com/api/user/4766302"
936
+ }
937
+ },
938
+ "goals": {
939
+ "data": [
940
+ {
941
+ "id": "664865",
942
+ "type": "goal"
943
+ },
944
+ {
945
+ "id": "691326",
946
+ "type": "goal"
947
+ },
948
+ {
949
+ "id": "691354",
950
+ "type": "goal"
951
+ }
952
+ ]
953
+ },
954
+ "rewards": {
955
+ "data": [
956
+ {
957
+ "id": "-1",
958
+ "type": "reward"
959
+ },
960
+ {
961
+ "id": "0",
962
+ "type": "reward"
963
+ },
964
+ {
965
+ "id": "2044963",
966
+ "type": "reward"
967
+ },
968
+ {
969
+ "id": "2044993",
970
+ "type": "reward"
971
+ },
972
+ {
973
+ "id": "1256594",
974
+ "type": "reward"
975
+ },
976
+ {
977
+ "id": "1256602",
978
+ "type": "reward"
979
+ },
980
+ {
981
+ "id": "1752810",
982
+ "type": "reward"
983
+ }
984
+ ]
985
+ }
986
+ },
987
+ "type": "campaign"
988
+ },
989
+ {
990
+ "attributes": {
991
+ "amount": 0,
992
+ "amount_cents": 0,
993
+ "created_at": null,
994
+ "description": "Everyone",
995
+ "remaining": 0,
996
+ "requires_shipping": false,
997
+ "url": null,
998
+ "user_limit": null
999
+ },
1000
+ "id": "-1",
1001
+ "type": "reward"
1002
+ },
1003
+ {
1004
+ "attributes": {
1005
+ "amount": 1,
1006
+ "amount_cents": 1,
1007
+ "created_at": null,
1008
+ "description": "Patrons Only",
1009
+ "remaining": 0,
1010
+ "requires_shipping": false,
1011
+ "url": null,
1012
+ "user_limit": null
1013
+ },
1014
+ "id": "0",
1015
+ "type": "reward"
1016
+ },
1017
+ {
1018
+ "attributes": {
1019
+ "amount": 100,
1020
+ "amount_cents": 100,
1021
+ "created_at": "2016-10-21T22:03:55+00:00",
1022
+ "description": "you're supporting me, and that's huge, and plenty. thank you. you'll get my patron-only emails and access to the <strong>patron-only feed</strong>, where the community centralizes and everything gets posted and talked about. and so you know: your voice is just as important as some well-off mofo giving me $100.",
1023
+ "discord_role_ids": null,
1024
+ "edited_at": "2017-02-16T12:57:42.379660+00:00",
1025
+ "image_url": null,
1026
+ "patron_count": 4610,
1027
+ "post_count": 1,
1028
+ "published": true,
1029
+ "published_at": "2016-10-21T22:03:55+00:00",
1030
+ "remaining": null,
1031
+ "requires_shipping": false,
1032
+ "title": "",
1033
+ "unpublished_at": null,
1034
+ "url": "/bePatron?c=71481&rid=103698",
1035
+ "user_limit": null
1036
+ },
1037
+ "id": "103698",
1038
+ "relationships": {
1039
+ "campaign": {
1040
+ "data": {
1041
+ "id": "71481",
1042
+ "type": "campaign"
1043
+ },
1044
+ "links": {
1045
+ "related": "https://www.patreon.com/api/campaigns/71481"
1046
+ }
1047
+ }
1048
+ },
1049
+ "type": "reward"
1050
+ },
1051
+ {
1052
+ "attributes": {
1053
+ "amount": 300,
1054
+ "amount_cents": 300,
1055
+ "created_at": "2016-10-21T22:03:56+00:00",
1056
+ "description": "you're supporting me even more, and you are awesome. thank you. you'll get\u00a0access to the <strong>patron-only feed,</strong>\u00a0as above, where we <strong>hang</strong>, and you'll also be <strong>DIRECTLY emailed keepable/playable/readable downloads of any content (PDFs, Mp3s, etc).</strong><br>",
1057
+ "discord_role_ids": null,
1058
+ "edited_at": "2017-02-16T12:57:42.714943+00:00",
1059
+ "image_url": null,
1060
+ "patron_count": 3760,
1061
+ "post_count": 32,
1062
+ "published": true,
1063
+ "published_at": "2016-10-21T22:03:56+00:00",
1064
+ "remaining": null,
1065
+ "requires_shipping": false,
1066
+ "title": "",
1067
+ "unpublished_at": null,
1068
+ "url": "/bePatron?c=71481&rid=103699",
1069
+ "user_limit": null
1070
+ },
1071
+ "id": "103699",
1072
+ "relationships": {
1073
+ "campaign": {
1074
+ "data": {
1075
+ "id": "71481",
1076
+ "type": "campaign"
1077
+ },
1078
+ "links": {
1079
+ "related": "https://www.patreon.com/api/campaigns/71481"
1080
+ }
1081
+ }
1082
+ },
1083
+ "type": "reward"
1084
+ },
1085
+ {
1086
+ "attributes": {
1087
+ "amount": 500,
1088
+ "amount_cents": 500,
1089
+ "created_at": "2016-10-21T22:03:56+00:00",
1090
+ "description": "you're supporting me a lot here, person, and $5 a song (or Thing) is really generous. thank you! you'll get all of the above, plus <strong>you'll be in the \"random surprise\" group</strong>. i'll email you random surprises every once in a while, including more personal blogs that i don't want out in the public, photos and poetry that aren't for the general public. let's see what goes down. so far i've sent random little digital tidbits that seem to really delight people.<br>",
1091
+ "discord_role_ids": null,
1092
+ "edited_at": "2017-02-16T12:57:42.850950+00:00",
1093
+ "image_url": null,
1094
+ "patron_count": 2679,
1095
+ "post_count": 24,
1096
+ "published": true,
1097
+ "published_at": "2016-10-21T22:03:56+00:00",
1098
+ "remaining": null,
1099
+ "requires_shipping": false,
1100
+ "title": "",
1101
+ "unpublished_at": null,
1102
+ "url": "/bePatron?c=71481&rid=103700",
1103
+ "user_limit": null
1104
+ },
1105
+ "id": "103700",
1106
+ "relationships": {
1107
+ "campaign": {
1108
+ "data": {
1109
+ "id": "71481",
1110
+ "type": "campaign"
1111
+ },
1112
+ "links": {
1113
+ "related": "https://www.patreon.com/api/campaigns/71481"
1114
+ }
1115
+ }
1116
+ },
1117
+ "type": "reward"
1118
+ },
1119
+ {
1120
+ "attributes": {
1121
+ "amount": 1000,
1122
+ "amount_cents": 1000,
1123
+ "created_at": "2016-10-21T22:03:56+00:00",
1124
+ "description": "this is a lot of money to spend on an artist, and you are really showing me some serious art-love here. THANK YOU. i'll try to make it worth it: you'll get all of the above, random surprises + photos and all, <strong>plus access to my patron-only webcasts</strong>\u00a0in which i'll chat/perform live with you top-tier patrons, take questions direct, talk about life, the work, and generally get jiggy. note: the patron base has voted to make these *later* available to the public, because everyone here is pretty generous. but this group gets to interact live, and you'll usually access get the archive before the public does....you'll be a members of the smaller group with whom i discuss deeper issues, business/patron strategies, and so forth. i love doing these, but not with thousandssss of people. i'll do the monthly webcast even if i haven't made any art, so you may be getting free webcasts if i'm in a funk, and we'll just talk online about how unproductive and fucking depressed i am. FUN!",
1125
+ "discord_role_ids": null,
1126
+ "edited_at": "2017-02-16T12:57:42.999498+00:00",
1127
+ "image_url": null,
1128
+ "patron_count": 1481,
1129
+ "post_count": 25,
1130
+ "published": true,
1131
+ "published_at": "2016-10-21T22:03:56+00:00",
1132
+ "remaining": null,
1133
+ "requires_shipping": false,
1134
+ "title": "",
1135
+ "unpublished_at": null,
1136
+ "url": "/bePatron?c=71481&rid=169837",
1137
+ "user_limit": null
1138
+ },
1139
+ "id": "169837",
1140
+ "relationships": {
1141
+ "campaign": {
1142
+ "data": {
1143
+ "id": "71481",
1144
+ "type": "campaign"
1145
+ },
1146
+ "links": {
1147
+ "related": "https://www.patreon.com/api/campaigns/71481"
1148
+ }
1149
+ }
1150
+ },
1151
+ "type": "reward"
1152
+ },
1153
+ {
1154
+ "attributes": {
1155
+ "amount": 10000,
1156
+ "amount_cents": 10000,
1157
+ "created_at": "2016-10-21T22:03:56+00:00",
1158
+ "description": "(inner circle - limited to 30) - hello, angel investor. DAMN. you're awesome. you'll get\u00a0all of the above...patron-feed, random surprises, webcasting, plus i'll <strong>thank you personally</strong> via email/phone/both (and chances are, i already know you from shows or ye olde kickstarter days). i'll also<strong> send you weird postcards from weird places</strong> i wind up. (i've been having fun with this). and you'll get guestlist to any show (if i can manage it, which i almost always can. we will email.)<br>",
1159
+ "discord_role_ids": null,
1160
+ "edited_at": "2017-02-16T12:57:43.139049+00:00",
1161
+ "image_url": null,
1162
+ "patron_count": 30,
1163
+ "post_count": 11,
1164
+ "published": true,
1165
+ "published_at": "2016-10-21T22:03:56+00:00",
1166
+ "remaining": 0,
1167
+ "requires_shipping": false,
1168
+ "title": "",
1169
+ "unpublished_at": null,
1170
+ "url": "/bePatron?c=71481&rid=169838",
1171
+ "user_limit": 30
1172
+ },
1173
+ "id": "169838",
1174
+ "relationships": {
1175
+ "campaign": {
1176
+ "data": {
1177
+ "id": "71481",
1178
+ "type": "campaign"
1179
+ },
1180
+ "links": {
1181
+ "related": "https://www.patreon.com/api/campaigns/71481"
1182
+ }
1183
+ }
1184
+ },
1185
+ "type": "reward"
1186
+ },
1187
+ {
1188
+ "attributes": {
1189
+ "amount": 100000,
1190
+ "amount_cents": 100000,
1191
+ "created_at": "2016-10-21T22:03:57+00:00",
1192
+ "description": "i'll call. we'll talk. we'll have dinner. all the things, pretty much. thank you (holy shit the end.)",
1193
+ "discord_role_ids": null,
1194
+ "edited_at": "2017-11-05T15:29:03.097531+00:00",
1195
+ "image_url": null,
1196
+ "patron_count": 1,
1197
+ "post_count": null,
1198
+ "published": true,
1199
+ "published_at": "2017-11-05T15:29:03.071286+00:00",
1200
+ "remaining": null,
1201
+ "requires_shipping": false,
1202
+ "title": "all the things",
1203
+ "unpublished_at": null,
1204
+ "url": "/bePatron?c=71481&rid=170781",
1205
+ "user_limit": null
1206
+ },
1207
+ "id": "170781",
1208
+ "relationships": {
1209
+ "campaign": {
1210
+ "data": {
1211
+ "id": "71481",
1212
+ "type": "campaign"
1213
+ },
1214
+ "links": {
1215
+ "related": "https://www.patreon.com/api/campaigns/71481"
1216
+ }
1217
+ }
1218
+ },
1219
+ "type": "reward"
1220
+ },
1221
+ {
1222
+ "attributes": {
1223
+ "amount": 100,
1224
+ "amount_cents": 100,
1225
+ "created_at": "2016-11-20T21:30:01+00:00",
1226
+ "description": "test\u00a0",
1227
+ "discord_role_ids": null,
1228
+ "edited_at": "2017-01-25T19:58:24.915393+00:00",
1229
+ "image_url": null,
1230
+ "post_count": null,
1231
+ "published": true,
1232
+ "published_at": "2016-11-20T21:30:01+00:00",
1233
+ "remaining": null,
1234
+ "requires_shipping": true,
1235
+ "title": "awesome reward tier",
1236
+ "unpublished_at": null,
1237
+ "url": "/bePatron?c=99664&rid=549201"
1238
+ },
1239
+ "id": "549201",
1240
+ "relationships": {
1241
+ "campaign": {
1242
+ "data": {
1243
+ "id": "99664",
1244
+ "type": "campaign"
1245
+ },
1246
+ "links": {
1247
+ "related": "https://www.patreon.com/api/campaigns/99664"
1248
+ }
1249
+ }
1250
+ },
1251
+ "type": "reward"
1252
+ },
1253
+ {
1254
+ "attributes": {
1255
+ "amount": 1000,
1256
+ "amount_cents": 1000,
1257
+ "created_at": "2016-12-06T00:43:20+00:00",
1258
+ "description": "<ul><li>Monthly patron-only livestream</li><li>Signed digital poster</li><li>Plus all previous rewards</li></ul>",
1259
+ "discord_role_ids": null,
1260
+ "edited_at": "2017-01-25T19:58:24.968217+00:00",
1261
+ "image_url": null,
1262
+ "post_count": 1,
1263
+ "published": true,
1264
+ "published_at": "2016-12-06T00:43:20+00:00",
1265
+ "remaining": null,
1266
+ "requires_shipping": true,
1267
+ "title": "Special Reward",
1268
+ "unpublished_at": null,
1269
+ "url": "/bePatron?c=99664&rid=1130550"
1270
+ },
1271
+ "id": "1130550",
1272
+ "relationships": {
1273
+ "campaign": {
1274
+ "data": {
1275
+ "id": "99664",
1276
+ "type": "campaign"
1277
+ },
1278
+ "links": {
1279
+ "related": "https://www.patreon.com/api/campaigns/99664"
1280
+ }
1281
+ }
1282
+ },
1283
+ "type": "reward"
1284
+ },
1285
+ {
1286
+ "attributes": {
1287
+ "completed_percentage": 100,
1288
+ "created_at": "2016-05-20T16:31:47+00:00",
1289
+ "description": "wefwef",
1290
+ "reached_at": "2017-04-14T18:24:30+00:00",
1291
+ "title": ""
1292
+ },
1293
+ "id": "432329",
1294
+ "type": "goal"
1295
+ },
1296
+ {
1297
+ "attributes": {
1298
+ "amount": 100,
1299
+ "amount_cents": 100,
1300
+ "created_at": "2017-10-02T23:22:22.811890+00:00",
1301
+ "description": "<ul>\n<li>I'm a little teapot</li>\n<li>Short and stout</li>\n<li>Here is my handle</li>\n<li>Here is my spout</li>\n</ul>\n<p><br></p>\n<p>VOILA!</p>",
1302
+ "discord_role_ids": null,
1303
+ "edited_at": "2017-10-04T20:41:13.900248+00:00",
1304
+ "image_url": "https://c10.patreonusercontent.com/3/eyJwIjoxLCJ2IjoiMSJ9/patreon-media/reward/2044963/c297f841719f4c69bf5e860b92624a15?token-time=2145916800&token-hash=u9YrgFn8svAi7e_RSpj0VypwKIXZACO3JJNqSIjPC1s%3D",
1305
+ "patron_count": 1,
1306
+ "post_count": null,
1307
+ "published": true,
1308
+ "published_at": "2017-10-04T20:41:13.872989+00:00",
1309
+ "remaining": 0,
1310
+ "requires_shipping": false,
1311
+ "title": "Goats.",
1312
+ "unpublished_at": null,
1313
+ "url": "/bePatron?c=682690&rid=2044963",
1314
+ "user_limit": 1
1315
+ },
1316
+ "id": "2044963",
1317
+ "relationships": {
1318
+ "campaign": {
1319
+ "data": {
1320
+ "id": "682690",
1321
+ "type": "campaign"
1322
+ },
1323
+ "links": {
1324
+ "related": "https://www.patreon.com/api/campaigns/682690"
1325
+ }
1326
+ }
1327
+ },
1328
+ "type": "reward"
1329
+ },
1330
+ {
1331
+ "attributes": {
1332
+ "amount": 100,
1333
+ "amount_cents": 100,
1334
+ "created_at": "2017-01-07T20:00:52.460325+00:00",
1335
+ "description": "Unlock exclusive content and join my community of patrons. Thank you!\n<ul>\n<li>Access to a feed of patron-only content</li>\n<li>Connect with other patrons</li>\n<li>bam</li>\n</ul>",
1336
+ "discord_role_ids": null,
1337
+ "edited_at": "2017-09-19T00:32:51.052936+00:00",
1338
+ "image_url": "https://c10.patreonusercontent.com/3/eyJwIjoxLCJ2IjoiMSJ9/patreon-media/reward/1256594/4dabb35e23a243d4aedbb5209987be90?token-time=2145916800&token-hash=ZuwVY2JIXVm6CzcvXXv473tnhdDq3Z_S4-HP9As33zE%3D",
1339
+ "patron_count": 0,
1340
+ "post_count": null,
1341
+ "published": true,
1342
+ "published_at": "2017-01-07T20:00:52.460325+00:00",
1343
+ "remaining": null,
1344
+ "requires_shipping": false,
1345
+ "title": "Become A Patron",
1346
+ "unpublished_at": null,
1347
+ "url": "/bePatron?c=682690&rid=1256594",
1348
+ "user_limit": null
1349
+ },
1350
+ "id": "1256594",
1351
+ "relationships": {
1352
+ "campaign": {
1353
+ "data": {
1354
+ "id": "682690",
1355
+ "type": "campaign"
1356
+ },
1357
+ "links": {
1358
+ "related": "https://www.patreon.com/api/campaigns/682690"
1359
+ }
1360
+ }
1361
+ },
1362
+ "type": "reward"
1363
+ },
1364
+ {
1365
+ "attributes": {
1366
+ "amount": 500,
1367
+ "amount_cents": 500,
1368
+ "created_at": "2017-01-07T20:03:05.646579+00:00",
1369
+ "description": "Let's make it official on social media.<ul><li>Will follow you on social media</li><li>Plus all previous rewards</li></ul>",
1370
+ "discord_role_ids": null,
1371
+ "edited_at": "2017-03-15T01:22:04.177399+00:00",
1372
+ "image_url": "https://c10.patreonusercontent.com/3/eyJwIjoxLCJ2IjoiMSJ9/patreon-media/reward/1256602/fc72e6d4683343b4b0efc1bb10f1b589?token-time=2145916800&token-hash=XdFURi_k9FhQVFU4d6dszfUMk-wLThFLdlwnbfDAdWs%3D",
1373
+ "patron_count": 1,
1374
+ "post_count": 3,
1375
+ "published": true,
1376
+ "published_at": "2017-01-07T20:03:05.646579+00:00",
1377
+ "remaining": null,
1378
+ "requires_shipping": false,
1379
+ "title": "Social Media Follow",
1380
+ "unpublished_at": null,
1381
+ "url": "/bePatron?c=682690&rid=1256602",
1382
+ "user_limit": null
1383
+ },
1384
+ "id": "1256602",
1385
+ "relationships": {
1386
+ "campaign": {
1387
+ "data": {
1388
+ "id": "682690",
1389
+ "type": "campaign"
1390
+ },
1391
+ "links": {
1392
+ "related": "https://www.patreon.com/api/campaigns/682690"
1393
+ }
1394
+ }
1395
+ },
1396
+ "type": "reward"
1397
+ },
1398
+ {
1399
+ "attributes": {
1400
+ "amount": 1000,
1401
+ "amount_cents": 1000,
1402
+ "created_at": "2017-06-09T00:34:59.835901+00:00",
1403
+ "description": "",
1404
+ "discord_role_ids": null,
1405
+ "edited_at": "2017-10-03T00:03:23.091113+00:00",
1406
+ "image_url": null,
1407
+ "patron_count": 0,
1408
+ "post_count": 1,
1409
+ "published": true,
1410
+ "published_at": "2017-10-03T00:03:23.043469+00:00",
1411
+ "remaining": null,
1412
+ "requires_shipping": true,
1413
+ "title": "Get stuff!",
1414
+ "unpublished_at": null,
1415
+ "url": "/bePatron?c=682690&rid=1752810",
1416
+ "user_limit": null
1417
+ },
1418
+ "id": "1752810",
1419
+ "relationships": {
1420
+ "campaign": {
1421
+ "data": {
1422
+ "id": "682690",
1423
+ "type": "campaign"
1424
+ },
1425
+ "links": {
1426
+ "related": "https://www.patreon.com/api/campaigns/682690"
1427
+ }
1428
+ }
1429
+ },
1430
+ "type": "reward"
1431
+ },
1432
+ {
1433
+ "attributes": {
1434
+ "amount_cents": 10000,
1435
+ "completed_percentage": 6,
1436
+ "created_at": "2017-01-04T18:29:05+00:00",
1437
+ "description": "I'll do it for real!",
1438
+ "reached_at": "2017-01-05T00:41:27+00:00",
1439
+ "title": ""
1440
+ },
1441
+ "id": "664865",
1442
+ "type": "goal"
1443
+ },
1444
+ {
1445
+ "attributes": {
1446
+ "amount_cents": 100000,
1447
+ "completed_percentage": 0,
1448
+ "created_at": "2017-01-24T01:04:30+00:00",
1449
+ "description": "Holy cowbells!",
1450
+ "reached_at": null,
1451
+ "title": ""
1452
+ },
1453
+ "id": "691326",
1454
+ "type": "goal"
1455
+ },
1456
+ {
1457
+ "attributes": {
1458
+ "amount_cents": 15000,
1459
+ "completed_percentage": 4,
1460
+ "created_at": "2017-01-24T01:33:58+00:00",
1461
+ "description": "another!",
1462
+ "reached_at": null,
1463
+ "title": ""
1464
+ },
1465
+ "id": "691354",
1466
+ "type": "goal"
1467
+ }
1468
+ ],
1469
+ "links": {
1470
+ "self": "https://www.patreon.com/api/user/32187"
1471
+ }
1472
+ }